gpt4 book ai didi

javascript - 字符串数组的奇怪 Javascript 行为

转载 作者:搜寻专家 更新时间:2023-11-01 05:29:20 25 4
gpt4 key购买 nike

有人在 JavaScript 中指出了这个奇怪的数组结果,我希望有人能解释为什么会这样。

如果我有这样的数组:

var arr = ["10", "10", "10", "10"];

然后我尝试将这些“10”映射为整数,如下所示:

arr.map(parseInt);

结果将是一个包含以下值的数组:[10, NaN, 2, 3](我在 Chrome 的控制台中运行了所有这些代码)

我预计结果是:[10, 10, 10, 10]

我知道 JavaScript 可以将字符串中的整数解析为不同的编号系统,例如二进制,我认为这可以解释 2 和 3 三的来源,有点。但是为什么 parseInt 会改为在不同的基础上解析它们呢?有人可以解释为什么这是我得到的结果吗?

最佳答案

Array.prototype.map接受一个带有 3 个参数的回调:

  1. 当前元素
  2. 元素的索引
  3. 调用此函数的数组

parseInt最多接受两个参数:

  1. 要解析的字符串
  2. (可选)基数,即数字的基数。

因此,在将 parseInt 传递给 map 时,您实际上会得到以下调用:

parseInt(arr[0], 0); // if 0, same as default
parseInt(arr[1], 1); // Parse as base 1
parseInt(arr[2], 2); // Parse as base 2 or binary
parseInt(arr[3], 3); // Parse as base 3

完成您正在尝试的事情的一种更简单、更有效的方法是使用 Number :

var arr = ["10", "10", "10", "10", "23", "74"];
console.log(arr.map(Number));

关于javascript - 字符串数组的奇怪 Javascript 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37574435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com