我有两个函数应该产生相同的结果。我想澄清为什么他们不这样做。我没有掌握for-loop和.forEach之间必须存在的重大区别。
我还是想:)
//
//DEMO OBJECT WITH TWO ARRAYS
//
var myArray = {
myList1 : [1,2,3,4],
myList2 : [5,6,7,8]
}
//
//FUNCTION ONE: Produces the sum of myArray.myList1 as expected.
//
var firstWay = function(){
var sum = 0;
for(var i = 0; i < myArray.myList2.length; i++){
sum += myArray.myList2[i];
}
return sum
};
var results2 = firstWay();
console.log(results2);
//FUNCTION TWO PRODUCES NaN
//1.) I don't know why it produced NaN.
//2.) I don't understand why this function wouldn't produce the same result as firstWay.
var secondWay = function() {
var sum = 0;
myArray.myList1.forEach(function(cur){
sum += cur.value;
});
return sum;
};
var results1 = secondWay();
console.log(results1);
答案 0 :(得分:0)
从sum += cur.value
中删除值,因此它只是sum += cur
。 value
您需要的已包含在cur
中。
var secondWay = function() {
var sum = 0;
myArray.myList1.forEach(function(cur){
sum += cur;
});
return sum;
};
var results1 = secondWay();
console.log(results1);
答案 1 :(得分:0)
许多答案仅存在于文档中,可以通过谷歌搜索找到。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
回调
在每个元素上执行的功能。它接受一到三个参数:
currentValue
数组中正在处理的当前元素
index
可选
数组中的索引currentValue
array
可选。 数组forEach()在“
因此,代码中的cur
是整数数组的当前元素。所以这是一个整数。因此,它没有value属性,它是您正在寻找的值,如注释中所指出。
答案 2 :(得分:0)
在第二次迭代中,您错误地放置了sum += cur.value
。
正确的方法应该是:sum += cur
。