代码之家  ›  专栏  ›  技术社区  ›  Tushar Walzade

在数字数组上迭代时的奇怪行为和parseInt[重复]

  •  0
  • Tushar Walzade  · 技术社区  · 3 年前

    我在JavaScript中呆了很长时间&它仍然给了我学习的新东西。

    根据我的说法,下面的行应该打印回相同的数组,也许它没有-

    console.log([2, 2, 2, 2, 2, 2].map(parseInt));
    // output => [2, NaN, NaN, 2, 2, 2]
    
    console.log([2, 2, 2, 2, 2, 2].map((num) => parseInt(num)));
    // output => [2, 2, 2, 2, 2, 2]

    有人能帮我理解吗?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Amila Senadheera    3 年前

    是的,那么回调map的参数是什么

    value,index,array
    

    您的代码示例是这样执行的:

    console.log(
      [2, 2, 2, 2, 2, 2].map((value, index) => {
        return parseInt(value, index);
      })
    );

    所以您将第二个参数传递给parseInt,它是索引

    parseInt的第二个参数是 base 其中要解析整数

    对于基数1和2,没有数字 2 ..所以它给出 NaN

    阅读有关的第二个参数的更多信息 parseInt on MDN

    Fix只提供一个参数,因为您的数字以10为基数

    console.log(
      [2, 2, 2, 2, 2, 2].map(value => parseInt(value))
    );