我正在按如下方式序列化表单(受此answer启发):
function formToArray(jQueryObj){
var result = {};
var arr = jQueryObj.serializeArray();
$.each(arr, function(){
result[this.name] = this.value;
});
return result;
}
返回{"input1_name":"value1", "input2_name": "42"}
之类的对象。但是,有些输入是数字的,我希望它们返回数字而不是字符串。所以我想要的输出是{"input1_name":"value1", "input2_name": 42}
,数字不是引号。
如何使用jQuery / JavaScript实现这一目标?
谢谢,
答案 0 :(得分:2)
如果您想将字符串转换回数字,可以使用Number()
:
$.each(arr, function(){
if (!isNaN(this.value)) { //check if value is convertible to number
result[this.name] = Number(this.value);
} else {
result[this.name] = this.value;
}
});
答案 1 :(得分:1)
您可以手动检查值是否为数字。
$.each(arr, function(){
if (!isNaN(this.value)) { //Check for non numbers negation
result[this.name] = Number(this.value);
} else {
result[this.name] = this.value;
}
});
答案 2 :(得分:1)
解析该值并使用isNaN
进行检查function formToArray(jQueryObj){
var result = {};
var arr = jQueryObj.serializeArray();
$.each(arr, function(){
result[this.name] =isNaN(parseInt(this.value))?this.value:parseInt(this.value);
});
return result;
}
答案 3 :(得分:1)
你可以试试这个:
var result = { };
$.each($('form').serializeArray(), function() {
result[this.name] = Number(this.value) ? Number(this.value) : this.value;
});
答案 4 :(得分:1)
您可以使用"string" * 1
强制转换为数字
比使用Number
和parseInt
更快
另外,如果您使用parseInt
,请记住传递基数10 parseInt(number, 10)
var converted = this.value*1;
result[this.name] = isNaN(converted) ? this.value : converted;