array.reduce()的正确用户

时间:2017-11-03 13:49:34

标签: javascript arrays reduce

我在下面概述了freeCodeCamp问题的解决方案,我想检查我对array.reduce()如何工作的逻辑/理解。

  function largestOfFour(arr) {

  // Created bigArray[]; as an empty container to push the largest number into.
  var bigArray = [];

    for(var i = 0; i < arr.length; i++){
     bigArray.push(arr[i].reduce(function(a, b) {
     return Math.max(a, b);
     }));
    }
   return bigArray;
  }

  largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

因此,reduce()调用的函数返回a和b之间的最大值。

a是初始值,因为我没有传递初始值,所以它是0,而4是当前值,即b。显然4大于0,此时,Math.max = 4。

then a = 4 and b = 5, then Math.max = 5
then a = 5 and b = 1, then Math.max = 5
then a = 5, and b = 3, then Math.max = 5

在遍历数组中的每个数字后,使用push()将5推入bigArray []。

bigArray.push(arr[i].reduce(function(a, b){return Math.max(a, b);}));
//arr[0] is now arr[4, 5, 1, 3]
arr[0].reduce(function(a, b){return Math.max(0, 4);}));
//Math.max returns 4
arr[0].reduce(function(a, b){return Math.max(4, 5);}));
//Math.max returns 5
arr[0].reduce(function(a, b){return Math.max(5, 1);}));
//Math.max returns 5    
arr[0].reduce(function(a, b){return Math.max(5, 3);}));
//Math.max returns 5

在上述逻辑之后,5得到'push()'到bigArray和bigArray = [5]。

只需检查我的逻辑并理解我自己的代码。

1 个答案:

答案 0 :(得分:1)

  

只需检查我的逻辑并理解我自己的代码。

需要稍作修正。

第一次迭代比较不在04之间,45

看一下演示

&#13;
&#13;
[4, 5, 1, 3].reduce(function(a, b) {
  console.log(a, b)
  return Math.max(a, b);
})
&#13;
&#13;
&#13;

输出

4 5

5 1

5 3

所以,只有3次迭代,看看这个documentation。迭代次数 n - 1 n 是项目数。