JavaScript字符串/整数比较

JavaScript字符串/整数比较

我将客户端的一些参数存储在HTML中,然后需要将它们作为整数进行比较。不幸的是,我遇到了一个严重的错误,我无法解释。错误似乎是,我的JS将参数读入字符串而不是整数,导致我的整数比较失败。

我已经生成了一个小的错误例子,我也无法解释。运行时,以下内容返回“true”:

javascript:alert("2">"10")


守着一只汪
浏览 767回答 4
4回答

守候你守候我

将字符串解析为整数parseInt:javascript:alert(parseInt("2", 10)>parseInt("10", 10))

拉莫斯之舞

检查字符串是否为整数与比较一个字符串是否大于或小于另一个字符串是分开的。您应该始终比较数字与数字,字符串与字符串作为处理混合类型的算法,不容易记住。'00100'&nbsp;<&nbsp;'1'&nbsp;//&nbsp;true因为它们都是字符串,所以只有‘00100’的第一个零与‘1’相比较,而且因为它的字符代码较低,所以它的计算值较低。然而:'00100'&nbsp;<&nbsp;1&nbsp;//&nbsp;false由于RHS是一个数字,LHS在比较之前被转换为数字。一个简单的整数检查是:function&nbsp;isInt(n)&nbsp;{ &nbsp;&nbsp;return&nbsp;/^[+-]?\d+$/.test(n);}无论n是数字还是整数,它都将在测试之前转换为字符串。如果您真的关心性能,那么:var&nbsp;isInt&nbsp;=&nbsp;(function()&nbsp;{ &nbsp;&nbsp;var&nbsp;re&nbsp;=&nbsp;/^[+-]?\d+$/; &nbsp;&nbsp;return&nbsp;function(n)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;re.test(n); &nbsp;&nbsp;}}());注意到像1.0这样的数字将返回false。如果您也想将这些数字计数为整数,那么:var&nbsp;isInt&nbsp;=&nbsp;(function()&nbsp;{ &nbsp;&nbsp;var&nbsp;re&nbsp;=&nbsp;/^[+-]?\d+$/; &nbsp;&nbsp;var&nbsp;re2&nbsp;=&nbsp;/\.0+$/; &nbsp;&nbsp;return&nbsp;function(n)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;re.test((''+&nbsp;n).replace(re2,'')); &nbsp;&nbsp;}}());一旦测试通过,转换为数字进行比较可以使用许多方法。我不喜欢parseInt()因为它会截断浮点数,使它们看起来像INT,所以以下所有内容都是“相等”的:parseInt(2.9)&nbsp;==&nbsp;parseInt('002',10)&nbsp;==&nbsp;parseInt('2wewe')诸若此类。一旦将数字测试为整数,就可以使用一元+运算符将它们转换为比较中的数字:if&nbsp;(isInt(a)&nbsp;&&&nbsp;isInt(b))&nbsp;{ &nbsp;&nbsp;if&nbsp;(+a&nbsp;<&nbsp;+b)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;a&nbsp;and&nbsp;b&nbsp;are&nbsp;integers&nbsp;and&nbsp;a&nbsp;is&nbsp;less&nbsp;than&nbsp;b &nbsp;&nbsp;}}其他方法有:Number(a);&nbsp;//&nbsp;liked&nbsp;by&nbsp;some&nbsp;because&nbsp;it's&nbsp;clear&nbsp;what&nbsp;is&nbsp;happening a&nbsp;*&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Not&nbsp;really&nbsp;obvious&nbsp;but&nbsp;it&nbsp;works,&nbsp;I&nbsp;don't&nbsp;like&nbsp;it

慕容森

将数字与字符串等效项进行比较,而不使用parseIntconsole.log(Number('2')&nbsp;>&nbsp;Number('10'));console.log(&nbsp;('2'/1)&nbsp;>&nbsp;('10'/1)&nbsp;);var&nbsp;item&nbsp;=&nbsp;{&nbsp;id:&nbsp;998&nbsp;},&nbsp;id&nbsp;=&nbsp;'998';var&nbsp;isEqual&nbsp;=&nbsp;(item.id.toString()&nbsp;===&nbsp;id.toString());isEqual;
打开App,查看更多内容
随时随地看视频慕课网APP