【问题标题】:Seeking Help Understanding Difference between For Loop & .forEach寻求帮助了解 For Loop 和 .forEach 之间的区别
【发布时间】:2020-06-06 02:09:35
【问题描述】:

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

【问题讨论】:

  • 数字没有.value 属性,它们值。
  • calculateTotal() 定义在哪里?
  • 为避免混淆,请勿将变量命名为myArray,它是一个数组。在这种情况下,myArray 是一个具有两个数组值属性的对象。

标签: javascript for-loop foreach


【解决方案1】:

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);

【讨论】:

  • 谢谢,这帮助很大。虽然我的错误看起来很小,但小错误就是把事情搞砸了。
【解决方案2】:

许多答案只是在文档中,可以通过谷歌搜索找到。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

回调
在每个元素上执行的函数。它接受一到三个参数:

currentValue
数组中正在处理的当前元素
index 可选
数组中的索引 currentValue
array 可选。 数组 forEach() 被调用 "

所以代码中的cur 是整数数组的当前元素。所以它是一个整数。所以它没有 value 属性,它是你正在寻找的值,正如评论中指出的那样。

【讨论】:

  • 感谢您花时间回答我的问题。发现您答案的最后两行很有帮助。
【解决方案3】:

在第二次迭代中,您错误地输入了sum += cur.value。 正确的方式应该是:sum += cur.

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 2015-11-18
    • 2021-10-28
    相关资源
    最近更新 更多