我正在完成第一次练习。 Eloquent JavaScript中的4个。 以下是我到目前为止所做的两个功能。
//Takes two number parameters and outputs the range into an array.
var rangeArray = [];
function range(start, end) {
for (var i = start; i <= end; ++i)
rangeArray.push(i);
return rangeArray;
}
//Takes the array from above and is supposed to output the sum of the elements of the array.
function sum(range) {
var sumTotal = 0;
for (var index = 0; index <= rangeArray.length; ++index)
sumTotal += rangeArray[index];
return sumTotal;
}
//The above functions are supposed to output the outputs shown below if they work correctly. The first one works, but the second console.log statement gives me an output of NaN.
console.log(range(1, 10));
// → [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(sum(range(1, 10)));
// → 55
所以,我的第二个功能出了问题,但我无法弄清楚是什么。它是初始参数(范围)?或者某处有语法错误?
这是我从中获取这些练习的页面的链接,它们位于页面底部附近。 http://eloquentjavascript.net/04_data.html
非常感谢您的帮助!
答案 0 :(得分:3)
您的<?php
$theme = wp_get_theme();
$screenshot_url = esc_url( $theme->get_screenshot() );
?>
<?php if ( is_home() ): ?>
<meta property="og:url" content="<?php echo get_home_url(''); ?>" />
<meta property="og:type" content="website" />
<meta property="og:title" content="<?php echo get_bloginfo('name'); ?>" />
<meta property="og:description" content="<?php echo get_bloginfo('description'); ?>" />
<meta property="og:image" content="<?php echo $screenshot_url; ?>" />
<?php elseif( is_category() ):
$cat_id = get_query_var('cat');
$cat_name = get_cat_name($cat_id);
$cat_desc = (category_description( $cat_id ) != '') ? category_description( $cat_id ) : get_bloginfo('description');
?>
<meta property="og:url" content="<?php echo get_category_link($cat_id); ?>" />
<meta property="og:type" content="website" />
<meta property="og:title" content="<?php echo $cat_name; ?>" />
<meta property="og:description" content="<?php echo $cat_desc; ?>" />
<meta property="og:image" content="<?php echo $screenshot_url; ?>" />
<?php else: ?>
<meta property="og:url" content="<?php the_permalink(); ?>" />
<meta property="og:type" content="website" />
<meta property="og:title" content="<?php echo get_the_title(); ?>" />
<meta property="og:description" content="<?php echo get_the_excerpt(); ?>" />
<?php if(has_post_thumbnail()):
$url = wp_get_attachment_url( get_post_thumbnail_id() );
?>
<meta property="og:image" content="<?php echo $url; ?>" />
<?php else: ?>
<meta property="og:image" content="<?php echo $screenshot_url; ?>" />
<?php endif; ?>
<?php endif; ?>
超出了数组的长度,因此会尝试将for
添加到undefined
,因此sumTotal
。
答案 1 :(得分:2)
您未在rangeArray
内创建range
,因此每次调用range
时,数字都会被推送到同一个数组(尝试记录两个结果{ {1}}来电;第二个是range(1, 10)
)。您还在1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10
中访问了相同的rangeArray
值,而不是其输入sum
。
同样在range
中,最后一个元素的索引为sum
,因此length - 1
应为<=
。
<
应该是:
range
和function range(start, end) {
var rangeArray = [];
for (var i = start; i <= end; ++i)
rangeArray.push(i);
return rangeArray;
}
应为:
sum
答案 2 :(得分:1)
有两个错误
x.length
包含,这是错误的(数组x
的元素从0
转到x.length-1
)这是修复的第二个函数的代码:
function sum(range) {
var sumTotal = 0;
for (var index = 0; index < range.length; ++index)
sumTotal += range[index];
return sumTotal;
}
答案 3 :(得分:0)
在第二个函数中尝试像这行一样循环
for (var index = 0; index < rangeArray.length; index++)
答案 4 :(得分:0)
只是一个小错误。这将有效
function sum(range) {
var sumTotal = 0;
for (var index = 0; index < range.length; index++)
sumTotal += range[index];
return sumTotal;
}
答案 5 :(得分:0)
派对迟到了,但正如其他人所说,使用array.length是从零开始的,所以使用<
而不是<=
:
var rangeArray = [];
function range(start, end) {
for (var i = start; i <= end; i++) rangeArray.push(i);
return rangeArray;
};
function sum(arr) {
var sumTotal = 0;
for (var index = 0; index < arr.length; index++) sumTotal += arr[index];
return sumTotal;
};
//console.log(range(1, 10));
console.log(sum(range(1, 10))); // 55
答案 6 :(得分:0)
您没有使用传递给sum函数的range参数。在sum函数中,而不是直接尝试使用rangeArry,它是从范围函数返回的。
像这样重写sum函数。
function sum(range) {
var sumTotal = 0;
for (var index = 0; index <= range.length; ++index)
sumTotal += range[index];
return sumTotal;
}