为什么当我想在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/