如何在 JavaScript 中将零 (0) 解析为整数

how to parse Zero (0) as integer in JavaScript

我正在开发一个接受这样输入的基本计算器 " 100 + 10/2 + 3 + 0 " 和 returns 在单独的字段中输出。 当我将这个东西分解成数组时,零不会被解析为整数。我的代码如下

var arr = ["100", "+", "0"];
arr = arr.map(x => parseInt(x) || x);

console.log(arr);

零是 falsy value,所以短路在这里不起作用。您需要明确检查

var arr = ["100", "+","0"];
arr = arr.map( x => x == 0 ? 0 : (parseInt(x) || x));
console.log(arr);

这是因为 0 是假的所以在 parseInt("0") returns 假之后你最终得到字符串

尝试使用 isNaN() 代替

var arr = ["100", "+","0"];
arr = arr.map( x => isNaN(x) ? x : parseInt(x) );

// use F12 to see the console
console.log(arr); // output is being display as [100, "+","0"]

parseInt("0") 是假的。您可以使用 Number() 将 0 转换为整数。

尝试以下操作:

var arr = ["100", "+", "0"];
arr = arr.map(x => !isNaN(Number(x))? Number(x) : x);

console.log(arr);

与其他答案类似,零是错误的。但是,parseInt returns NaN 失败后,可用于构建答案如下:

let arr = ["100", "+", "0"];
arr = arr.map((x) => {
  const parsed = parseInt(x);
  return Number.isNaN(parsed) ? x : parsed;
});
console.log(arr);

IMO 这是一个更好的解决方案,因为它明确了 parseInt return 的 return 类型,并且不依赖类型强制。

注意:isNaN 有一些有趣的细微差别。 ES2015 Number.isNaN 在这里用于防止任何类型强制问题,尽管在这种情况下并不是绝对必要的。