为了在js中尝试reduce
,我试图用它来将2个数组值加在一起。我知道很多方法可以做到这一点而不减少,并且我认为还有减少,但问题是:当控制台记录减少的数组时,我只得到最后一个减少的值,我不知道为什么。< / p>
let dblArray = [
[1, 2, 3],
[4, 5, 6]
]
let arr = dblArray[0].reduce((newArr, iter, index) => {
// this returns 5, 7, 9 as expected
return iter + dblArray[1][index]
}, [])
console.log(arr) // this returns only 9
有人可以告诉我为什么会这样吗?我想知道我的实施是否错误。
由于
答案 0 :(得分:1)
通过使用迭代器函数返回的值覆盖先前的值来减少工作量。因此,当您到达最后一次迭代时,它仅返回最后一个值。
你需要在迭代器函数中构建一个数组,加入前一个值和当前值,然后返回:
let dblArray = [
[1, 2, 3],
[4, 5, 6]
]
let arr = dblArray[0].reduce((previousArray, iter, index) => {
// We can use array spread here to join the old array,
// and add the new value to it
return [...previousArray, iter + dblArray[1][index]];
// On each iteration this would log:
// [5]
// [5, 7]
// [5, 7, 9]
}, [])
console.log(arr)