array.reduce() 的正确用户

Proper User of array.reduce()

我在下面概述了 freeCodeCamp 上的一个问题的解决方案,我想检查一下 logic/understanding 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].

只是检查我的逻辑和对我自己代码的理解。

Just checking my logic and understanding of my own code.

需要稍作更正。

第一次迭代中比较的不是0445.

看看这个演示

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

输出是

4 5

5 1

5 3

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