你能告诉我为什么这个方法不起作用,以及如何用一个简单的“reduce”方法让它起作用吗?
let newArray = array.reduce((acc,value,index) => index%2 ? acc[0]+=value: acc[1]+=value ,[0,0]);
console.log(newArray);
Output: Nan“array”只是一个带有数字的数组。
请不要使用一些冗长且复杂的函数来创建答案。我想让它尽可能的简单。
我知道我们可以做到:
let sum = [0,0];
array.map((value,index)=> index%2? sum[0]+=value : sum[1]+=value);
console.log(sum);但我很好奇,为什么那不管用。
发布于 2021-05-08 05:18:18
您没有从函数返回累加器(acc)。您返回的是赋值表达式acc[0] += value的结果,它只是一个数字。在下一次迭代中,您尝试将该数字编入索引。您可以使用类似以下内容来修复此问题:
let array = [1, 2, 3, 4, 5]
let newArray = array.reduce((acc,value,index) =>
(index % 2 ? acc[0] += value: acc[1] += value, acc),[0,0])
console.log(newArray);
https://stackoverflow.com/questions/67441759
复制相似问题