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

时间:2018-07-21 17:48:36

标签: javascript parseint

我正在研究一个基本的计算器,需要像这样的输入     " 100 + 10/2 + 3 + 0 "并在单独的字段中返回输出。 当我把这个东西分解成一个数组时,零不会被解析为整数。我的代码如下

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

console.log(arr);

4 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:6)

这是因为0虚假,所以在parseInt("0")返回虚假之后,您最终得到了字符串

尝试改用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"]

答案 2 :(得分:2)

类似于其他答案,零为假。但是,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返回的返回类型,并且不依赖于类型强制。

注意:isNaN有一些有趣的细微差别。 ES2015 Number.isNaN用于防止类型强制转换的任何问题,尽管在这种情况下并非必须如此。

答案 3 :(得分:1)

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

尝试以下操作:

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

console.log(arr);