我需要解析包含文本和数字的查询字符串。例如以下查询字符串:
?userID=12&team=Sales&quarter=Q1&count=2310
应该被翻译成以下JavaScript对象:
{
userID:12, // not "12"
team:"Sales",
quarter:"Q1",
count:2310 // not "2310"
}
目前我分两步进行:
!isNaN(parseFloat(n)) && isFinite(n)
这似乎效率很低,特别是因为我的大部分参数都不是数字。还有更好的方法吗?
答案 0 :(得分:1)
两个建议:
据我所知,将字符串转换为数字的最快方法是对它们使用一元运算符,如下所示:
+(strVar)
另外乘以1应该是快速AFAIK
答案 1 :(得分:0)
解析查询字符串后,您可以将整数值的字符串表示形式转换为实际的整数,如下所示:
var obj; // your object that the string is parsed into, with all values as strings.
for (var prop in obj) {
if (String(parseInt(obj[prop])) === obj[prop]) {
obj[prop] = parseInt(obj[prop]);
}
}
答案 2 :(得分:0)
因为如果将数字格式的任何字符串(如“3239”)乘以1,则会将该字符串转换为数字。
var example = 5 + (o.count*1) //o.count will be a number...