为什么 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 ]
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

