Javascript 编写一个接受数字数组的sum()函数

Javascript 编写一个接受数字数组的sum()函数,javascript,arrays,loops,Javascript,Arrays,Loops,有人能给我解释一下我做错了什么吗。。。 这段代码来自于雄辩的javascript,它工作得很好 函数和(数组){ 设total=0; for(数组的let值){ 总+=价值; } 返回总数; }您的for循环超出了数组索引。您必须使用: a < numArray.length a

有人能给我解释一下我做错了什么吗。。。 这段代码来自于雄辩的javascript,它工作得很好

函数和(数组){
设total=0;
for(数组的let值){
总+=价值;
}
返回总数;

}
您的
for
循环超出了数组索引。您必须使用:

a < numArray.length
a
而不是:

a <= numArray.length

a您的
for
循环超出了数组索引。您必须使用:

a < numArray.length
a
而不是:

a <= numArray.length

a您只需将
undefined
添加到
add
,因为您将索引计数设置为long

for (let a = 0; a <= numArray.length; a++) {
//                 ^                         wrong, takes last index + 1

for(设a=0;a您只需将
undefined
添加到
add
,因为您将索引计数设置为long

for (let a = 0; a <= numArray.length; a++) {
//                 ^                         wrong, takes last index + 1

for(设a=0;a问题在于此
a问题在于此
a您得到了越界错误。在
for
循环中,您可以将其更改为:

for(设a=0;a


for(假设a=0;a您将得到一个越界错误。在
for
循环中,您可以将其更改为:

for(设a=0;a


for(设a=0;a您还可以编写一个包含两个参数的函数,一个数组和一个回调函数,用于添加数组的值,如

function forEach(array, arrayAdder){
    for (var i = 0; i < array.length; i ++)
    arrayAdder(array[i]) ;
}
然后我们将其传递到函数中,如下所示

forEach(array, function(number){
    sum += number ;
});
然后打印答案

console.log(sum);

您还可以编写一个包含两个参数的函数,一个数组和一个回调函数,用于添加数组的值,如

function forEach(array, arrayAdder){
    for (var i = 0; i < array.length; i ++)
    arrayAdder(array[i]) ;
}
然后我们将其传递到函数中,如下所示

forEach(array, function(number){
    sum += number ;
});
然后打印答案

console.log(sum);

感谢您的更正,我担心如果<小于数组长度,循环将无法完成。可能您没有注意到索引是以零为基础的。数组索引从零开始,长度是最大索引加上一。对于非稀疏数组,您的项数与长度显示的项数相同。@Ola Juwon数组的索引为0,所以如果你有一个数组
[a,b,c,d]
存储桶为0-3,但长度为4谢谢更正,我担心如果<小于数组的长度,则循环将无法完成。可能您忽略了索引是以零为基础的这一点。数组索引以零开始,长度是最大索引加1。对于非稀疏数组,您的项数与长度显示。@Ola Juwon数组的索引为0,因此如果您有一个数组
[a,b,c,d]
存储桶为0-3,但长度为4Oh gotcha,忘记了我的数组从索引0开始,如果设置为=参数数组中不存在索引的参数数组的长度,则会额外运行一次。我专注于我的长度属性,忘记了数组的索引从0开始,而不是1…太好了,忘记了我的数组从索引0开始,如果设置为=参数数组中不存在索引的参数数组的长度,则会额外运行一次。我专注于我的长度属性,忘记了数组的索引从0开始,而不是从1开始…太好了!该数组中实际有哪些值?我怀疑不是所有的值数组中有一个“数字”。数组中实际有什么值?我怀疑不是所有的数组都有一个“数字”。