Typescript:检查字符串是否为数字。

9

我是一个新手网站开发者,在我的函数中想要检查给定的字符串值是否为数字。如果字符串不是有效的数字,我想返回null。

以下方法对所有情况都有效,但当字符串为“0”时返回null。

parseInt(columnSortSettings[0]) || null;

我该如何避免这种情况发生。显然,parseInt将0视为非整数!

2
0 是一个假值。 - Hacketo
2
我有一段时间没有发布这个链接了,但对于任何正在学习/使用JavaScript的人来说,它始终值得一读。 - musefan
3个回答

9

由于0被视为假,因此您可以在这种情况下使用isNaN()

var res = parseInt(columnSortSettings[0], 10);
return isNaN(res) ? null : res;

不要忘记 基数(radix) - Andy

4

这是因为您基本上正在测试0,而0也是false。

您可以这样做:

var n = columnSortSettings[0];
if(parseInt(n, 10) || n === '0'){
    //...
}

如果它是一个数字,你也可以进行测试

if(typeof(parseInt(n, 10)) === 'number'){
  //...
}

但要小心,因为

typeof Infinity === 'number';
typeof NaN === 'number';

不要忘记 进制 - Andy
@Andy,嗯,完全忘记了 :) - Eric
感谢 @Eric。由于SO只允许我接受一个答案,所以我已经点赞了你的回答。 - Rahul Misra

1
你可以使用 rxjs 库中的 isNumeric 操作符(引入 rxjs/util/isNumeric)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接