【问题标题】:Parse numbers in jQuery.serializeArray()在 jQuery.serializeArray() 中解析数字
【发布时间】:2017-01-11 03:51:04
【问题描述】:

我正在按如下方式序列化一个表单(受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 实现这一点?

谢谢,

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    如果要将字符串转换回数字,可以使用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;
      }
    });
    

    【讨论】:

    • 发现一个bug,当this.value === '0'时,条件为假
    【解决方案2】:

    您可以手动检查该值是否为数字。

    $.each(arr, function(){
      if (!isNaN(this.value)) { //Check for non numbers negation
        result[this.name] = Number(this.value);
      } else {
        result[this.name] = this.value;
      }
    });
    

    【讨论】:

      【解决方案3】:

      解析值并用 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;
      }
      

      【讨论】:

        【解决方案4】:

        你可以试试这个:

        var result = { };
        $.each($('form').serializeArray(), function() {
            result[this.name] = Number(this.value) ? Number(this.value) : this.value;
        });
        

        【讨论】:

          【解决方案5】:

          您可以使用"string" * 1 强制转换为数字

          它比使用NumberparseInt 更快
          另外,如果您使用parseInt,请记住传递基数 10 parseInt(number, 10)

          var converted = this.value*1;
          result[this.name] = isNaN(converted) ? this.value : converted;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-06-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-01-05
            • 2021-01-15
            • 1970-01-01
            • 2019-02-15
            相关资源
            最近更新 更多