multiplyOddByTwo function using javascript



我试图获得以下数组中的奇数,然后使用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]));

需要指出的两件事:

  1. 您必须修改reduce函数中的第二个参数。这是你的初始价值。reduce回调(acc(中的第一个参数是在特定迭代之前的累积值
  2. 您必须在每次迭代中返回您的累积值。(在最后一次迭代中,这将是您计算的答案。这里您没有返回任何内容,因此未定义(

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。任何不返回任何内容的函数都返回undefined

如果你希望它只返回奇数乘以2,而不返回偶数,那么使用这个:

const multiplyOddByTwo = (arr) => {
const odd = arr.filter(num => num % 2 !== 0);
return odd.map(i => i * 2);
}
console.log(multiplyOddByTwo([1, 2, 3]));

否则,如果你希望它返回所有数字,但将奇数乘以2,那么使用这个:

const multiplyOddByTwo = (arr) => {
return arr.map(num => num % 2 === 0 ? num : num * 2);
}
console.log(multiplyOddByTwo([1, 2, 3]));

最新更新