javascript - 使用javascript的multiplyOddByTwo函数

标签 javascript arrays

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

关于javascript - 使用javascript的multiplyOddByTwo函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68168569/

相关文章:

javascript - 有没有办法使用 input type= time 禁用 future 时间

javascript - 随机数范围的不同概率

java - 使 arrayList.toArray() 返回更具体的类型

c - qsort() 比较结构数组 : very strange behaviour

javascript - jQuery/IE10-SCRIPT438 : Object doesn't support property or method 'data'

javascript - 无法读取未定义的属性 'replace' - 替换 JS 生成的 HTML 中的文本

javascript - 如何使用自动启动在系统启动时启动应用程序?

c - 搜索结构体数组的函数 (C)

arrays - PHP - 删除多维数组中的元素

javascript - 如何将制表符分隔的数组拆分为两个数组?