了解 reduce() 函数的工作原理
Understanding how the reduce() function works
我只是确保我知道这个功能是如何工作的。我昨晚阅读了 material 并观看了关于 reduce 函数的视频大约 3 个小时,我没有明白。我离开电脑,做了些食物,看了个电视节目,然后又看了看电脑,砰!我知道了。我现在知道 reduce 函数是如何工作的了。
我只是不知道为什么下面的第一个示例有效而第二个示例无效。
来源:Eloquent Javascript Ch. 5 §Flattening
这个有效:
var arrays = [[1, 2, 3], [4, 5], [6]];
var flattened = arrays.reduce(function(a, b) {
return a.concat(b);
});
flattened; //=>[1, 2, 3, 4, 5, 6]
我尝试 fiddle 修改代码,将变量更改为函数。不知何故,我打破了它。下面是 returns undefined
,我不知道为什么。
这不起作用:
var arrays = [[1, 2, 3], [4, 5], [6]];
function flattened(arr){
arr.reduce(function(a, b) {
return a.concat(b);
});
}
flattened(arrays); //=> undefined
为什么第一个功能有效,而第二个功能无效?我确定这是我遗漏的小东西。
您需要 return
来自 flattened
函数。
function flattened(arr){
return arr.reduce(function(a, b) {
return a.concat(b);
});
}
因为函数 flattened
没有 return 任何东西。
function flattened(arr){
/* “return” needs to be here */ arr.reduce(function(a, b) { // No return from the outer wrapper function “flattened”
return a.concat(b); // return from the inner function “reduce”
});
}
其中的函数做了 return 某事,但包含函数没有。
flattened() 需要 return 这样的值:
var arrays = [[1, 2, 3], [4, 5], [6]];
function flattened(arr){
return arr.reduce(function(a, b) {
return a.concat(b);
});
}
flattened(arrays);
我只是确保我知道这个功能是如何工作的。我昨晚阅读了 material 并观看了关于 reduce 函数的视频大约 3 个小时,我没有明白。我离开电脑,做了些食物,看了个电视节目,然后又看了看电脑,砰!我知道了。我现在知道 reduce 函数是如何工作的了。
我只是不知道为什么下面的第一个示例有效而第二个示例无效。
来源:Eloquent Javascript Ch. 5 §Flattening
这个有效:
var arrays = [[1, 2, 3], [4, 5], [6]];
var flattened = arrays.reduce(function(a, b) {
return a.concat(b);
});
flattened; //=>[1, 2, 3, 4, 5, 6]
我尝试 fiddle 修改代码,将变量更改为函数。不知何故,我打破了它。下面是 returns undefined
,我不知道为什么。
这不起作用:
var arrays = [[1, 2, 3], [4, 5], [6]];
function flattened(arr){
arr.reduce(function(a, b) {
return a.concat(b);
});
}
flattened(arrays); //=> undefined
为什么第一个功能有效,而第二个功能无效?我确定这是我遗漏的小东西。
您需要 return
来自 flattened
函数。
function flattened(arr){
return arr.reduce(function(a, b) {
return a.concat(b);
});
}
因为函数 flattened
没有 return 任何东西。
function flattened(arr){
/* “return” needs to be here */ arr.reduce(function(a, b) { // No return from the outer wrapper function “flattened”
return a.concat(b); // return from the inner function “reduce”
});
}
其中的函数做了 return 某事,但包含函数没有。
flattened() 需要 return 这样的值:
var arrays = [[1, 2, 3], [4, 5], [6]];
function flattened(arr){
return arr.reduce(function(a, b) {
return a.concat(b);
});
}
flattened(arrays);