我有一个问题,我建立了一个非常简单的javascript搜索邮政编码。 我正在使用JS Numbers,因为我想检查传递的数字(搜索项)是否更少||等于或更多||等于最大值和最小值。
value >= splitZips[0] && value <= splitZips[1]
但是Javascript Number var类型删除了前导0,这是一个问题,因为我有邮政编码,如01075和邮政编码,如8430.所以它找不到小的4位数代码。
知道如何解决这个问题吗?
答案 0 :(得分:7)
将它们表示为String
。在严格模式之外,前导零表示否则为八进制数。
另外,为什么在计算数字时前导零有任何意义?如果需要,只需使用parseInt(num, 10)
。
答案 1 :(得分:2)
将邮政编码存储并显示为字符串,从而保留前导零。如果您需要将数值比较转换为当时的数字。最简单的转换方法是使用一元加运算符:
var strPC = "01745",
numPC = +strPC;
alert(numPC === +"01745"); // true
+value >= +splitZips[0] && +value <= +splitZips[1];
// etc.
在开始比较之前,您可能希望确保输入的值实际上是数字 - 确保它是带有或不带前导零的四位或五位数代码的简单方法是使用正则表达式:
/^\d{4,5}$/.test(searchTerm) // returns true or false
答案 2 :(得分:1)
而是使用类型转换的parseInt:)
"0123">"122" // false
+"0123">"122" // true | that means: 123>"122"
顺便说一下,您还可以使用每个按位运算符:
~~"0123"
"0123"|0
"0123"&"0123"
"0123">>0
"0123"<<0
具有相同的效果:)