为什么当我想在reduce函数中使用push函数返回一个新数组时,出现错误。但是,当我在reduce函数中使用concat方法时,它会毫无问题地返回一个新数组。

我要做的就是将数组传递给reduce函数,然后返回相同的数组。

var store = [0,1,2,3,4];

var stored = store.reduce(function(pV,cV,cI){
  console.log("pv: ", pV);
  return pV.push(cV);
},[]);

这将返回一个错误。但是当我使用concat时:
var store = [0,1,2,3,4];

var stored = store.reduce(function(pV,cV,cI){
  console.log("pv: ", pV);
  return pV.concat(cV);
},[]);

它返回相同的数组。

有什么想法吗?

最佳答案

push返回数组的新长度。

您需要的是最初提供的数组。

因此,如下更改代码。

var store = [0, 1, 2, 3, 4];

var stored = store.reduce(function(pV, cV, cI){
  console.log("pv: ", pV);
  pV.push(cV);
  return pV; // *********  Important ******
}, []);
concat返回将提供的数组的元素与串联的元素组合在一起的新数组。这样就可以了。

关于javascript - 使用reduce函数返回数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35431292/

10-11 14:18