为什么 Array.map(Number) 会将空格转换为零?JavaScript

javascriptweb developmentobject oriented programming更新于 2025/9/25 2:52:17

假设我们给出了以下代码和输出,我们需要弄清楚为什么 JavaScript 会将空字符串("“ “")转换为 0 −

const digify = (str) => {
   const parsedStr = [...str].map(Number)
   return parsedStr;
}
console.log(digify("778 858 7577"))

输出

[
7, 7, 8, 0, 8,
5, 8, 0, 7, 5,
7, 7
]

这种行为可能非常令人不安,尤其是当字符串中也有一些 0 时

这种情况实际上会发生,因为在 map() 函数内部,当我们使用 Number 将每个字符转换为其数值等价物时,它实际上使用抽象相等比较 (==) 而不是严格相等比较 (===),根据 ' ' == 0 得出 true,因此每个空格都转换为 0。

为了防止这种荒谬的行为,我们可以在 map() 函数中做一些调整,例如 −

示例

const sin = (str) => {
   const parsedStr = [...str].map(i => parseInt(i, 10))
   return parsedStr;
}
console.log(sin("778 858 7577"))

因此,每当遇到空格时,它将被转换为 NaN,这是一种更合乎逻辑的行为。

输出

[
7, 7, 8, NaN, 8,
5, 8, NaN, 7, 5,
7, 7
]

相关文章


有用资源