了解reduce()函数的工作原理

时间:2015-08-01 17:35:17

标签: javascript arrays reduce

我只是确保我知道这个功能是如何工作的。我昨晚读了材料并看了关于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

为什么第一个功能起作用,而不是第二个?我确定它是我失踪的小东西。

3 个答案:

答案 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);