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.
需要稍作更正。
在第一次迭代中比较的不是0
和4
,是4
和5
.
看看这个演示
[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 是项目数。
我在下面概述了 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.
需要稍作更正。
在第一次迭代中比较的不是0
和4
,是4
和5
.
看看这个演示
[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 是项目数。