为什么我想在reduce函数中使用push方法返回一个新数组时会出现错误,但是使用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);
},[]);
它返回相同的数组。
有什么想法吗?
return PV.push
的意思是,在下一次迭代中,PV 将是一个数字,而不是一个数组,因为 push 方法返回数组的长度。如果你想的话,可以使用return pV.push(cV), pV;
,但除了省略一行代码pV.push(cV); return pV;
以外没有任何好处。 - Jaromanda Xvar stored = store.slice();
就可以了。 - Jaromanda Xmap 方法对数组中的每个元素执行一次提供的回调函数,按顺序构造一个新数组,并将结果存储到新数组中
,这似乎完美地描述了问题提问者所做的事情。 - Jamiec