寻求帮助了解For Loop和.forEach之间的区别

时间:2020-06-06 02:09:35

标签: javascript for-loop foreach

我有两个函数应该产生相同的结果。我想澄清为什么他们不这样做。我没有掌握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);

3 个答案:

答案 0 :(得分:0)

sum += cur.value中删除值,因此它只是sum += curvalue 您需要的已包含在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

相关问题