我试图获取以下数组中的奇数,然后使用 reduce
方法乘以 2,但它给了我 undefined
错误。请提供任何帮助。
const multiplyOddByTwo = (arr) => {
return arr.reduce((acc, curr) => {
if (curr % 2 === 0) {
arr.push(curr);
} else {
arr.push(curr * 2)
}
}, [])
}
console.log(multiplyOddByTwo([1, 2, 3]));
最佳答案
有两点需要指出:
- 您必须修改reduce函数中的第二个参数。这是你的初始值。 reduce 回调(acc)中的第一个参数是直到该特定迭代为止的累积值。
- 您必须在每次迭代中返回累积值。 (在最后一次迭代中,这将是您计算出的答案。在这里您不会返回任何内容,因此未定义)
const multiplyOddByTwo = (arr) => {
return arr.reduce((acc, curr) => {
if (curr % 2 === 0) {
acc.push(curr);
} else {
acc.push(curr * 2)
}
return acc;
}, [])
}
console.log(multiplyOddByTwo([1, 2, 3])); // [2,2,6]
这会将奇数索引元素乘以 2。
编辑:这不是未定义的错误。这只是返回的未定义
。任何不返回任何内容的函数都会返回undefined
。
关于javascript - 使用javascript的multiplyOddByTwo函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68168569/