我只是确保我知道这个功能是如何工作的。我昨晚读了材料并看了关于reduce功能的视频大概3个小时,我没拿到。我离开电脑,做了一些食物,看了一个电视节目,然后又看了看电脑和BAM!我知道了。我知道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]
我试图摆弄代码,将变量更改为函数。不知何故,我打破了它。以下内容返回undefined
,我不确定原因。
这不起作用:
var arrays = [[1, 2, 3], [4, 5], [6]];
function flattened(arr){
arr.reduce(function(a, b) {
return a.concat(b);
});
}
flattened(arrays); //=> undefined
为什么第一个功能起作用,而不是第二个?我确定它是我失踪的小东西。
答案 0 :(得分:2)
您需要return
函数中的flattened
。
function flattened(arr){
return arr.reduce(function(a, b) {
return a.concat(b);
});
}
答案 1 :(得分:1)
因为函数flattened
没有返回任何内容。
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”
});
}
其中的函数确实返回了某些内容,但包含的函数却没有。
答案 2 :(得分:1)
flattened()需要返回如下值:
var arrays = [[1, 2, 3], [4, 5], [6]];
function flattened(arr){
return arr.reduce(function(a, b) {
return a.concat(b);
});
}
flattened(arrays);