有人能解释一下为什么函数在以下两个场景中表现不同吗?在第一个场景中,会出现错误提示'arr.push不是一个函数‘。
场景1
const arr = [1, 3, 11];
const doubled = arr.reduce((doubledArr, item) => {
return doubledArr.push(item * 2);
}, []);
console.log(doubled);场景2
const arr = [1, 3, 11];
const doubled = arr.reduce((doubledArr, item) => {
doubledArr.push(item * 2);
return doubledArr
}, []);
console.log(doubled);发布于 2021-04-03 14:33:54
在第一个场景中,您返回Array.push()的结果,这是在其上调用该方法的对象(累加器array)的新length property。在Array.reduce()的下一次迭代中,此number将作为累加器提供,您将再次尝试将一个值推送到它。因为它不再是一个array而是一个number,所以您会得到错误arr.push is not a function。
Array.reduce()回调应该始终返回累加器,与场景2中的操作相同。
https://stackoverflow.com/questions/66928297
复制相似问题