【问题标题】:multiple array to json object convert?多个数组到 json 对象的转换?
【发布时间】:2013-07-16 06:28:13
【问题描述】:

我有多个数组,如下所示:

    var a=[1,2,3,4,5,6,7,8,9];

    var b=["a","b","c","d","e","f","g","h","i","j"];

但我需要将数组转换为数组对象,如下所示:

    ab=[
        ["1","a"],
        ["2","b"],
        ["3","c"],
        ["4","d"],
        ["5","e"],
        ["6","f"],
        ["7","g"],
        ["8","h"],
        ["9","i"]
    ];

这里我只提到了两个数组,但我使用了超过 6 个数组。

如何转换为 JSON 对象

【问题讨论】:

    标签: javascript jquery arrays json converter


    【解决方案1】:
    for (var i = 0; i < a.length; i++) {
      ab[i] = [a[i], b[i]];
    }
    

    underscore 有一个名为“zip”的方法,它对任意数量的参数执行此任务。这是一个粗略的、未经广泛测试的实现:

    function zip() {
      if ( ! arguments.length ) {
        return [];
      } 
      var result = [];  
      for (var i = 0; i < arguments[0].length; i++) {
        result[i] = [];
        for (var j = 0; j < arguments.length; j++) {
          result[i][j] = arguments[j][i];
        }
      }
      return result;
    }
    
    var ab = zip(a,b);
    

    【讨论】:

      【解决方案2】:

      聚会有点晚了,但这应该可以完成工作

      2 个阵列

        var ab = "",
            a = [1, 2, 3, 4, 5, 6, 7, 8, 9],
            b = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
            x = b.length,
            i = 0;
        for (; i < x; i++) {
            if (typeof a[i] == 'undefined' || typeof b[i] == 'undefined') continue;
            ab += '[' + a[i] + ',"' + b[i] + '"],';
      
        }
        ab = JSON.parse("[" + ab.substr(0, --ab.length) + "]");
      
        // ab[0][0] === 1
        // ab[0][1] === 'a'
        // ab[0]    === [1, "a"]
        // ab       === [
        //                [1, "a"],
        //                [2, "b"],
        //                [3, "c"],
        //                [4, "d"],
        //                [5, "e"],
        //                [6, "f"],
        //                [7, "g"],
        //                [8, "h"],
        //                [9, "i"]
        //               ];
      

      Try it at JSFIDDLE

      假设 a 和 b 的长度相同,这会将您的数组转换为 json 对象。

      6 个阵列

      您可以扩展代码以容纳更多这样的数组

        var ab = "",
            a = [1, 2, 3, 4, 5, 6, 7, 8, 9],
            b = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
            c = ["h", "i", "j", "k", "l", "m", "n", "o", "p", "q"],
            d = ["r", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
            e = ["s", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
            f = ["t", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
            x = b.length,
            i = 0;
        for (; i < x; i++) {
            if (typeof a[i] == 'undefined' || typeof b[i] == 'undefined') continue;
            ab += '[' + a[i] + ',"' + b[i] + '","' + c[i] + '","' + d[i] + '","' + e[i] + '","' + f[i] + '"],';
      
        }
        ab = JSON.parse("[" + ab.substr(0, --ab.length) + "]");
      
        // ab[0]    === [1, "a", "h", "r", "s", "t"]
        // ab[0][5] === "t" 
        // ab[0][3] === "h"
      

      6 ARRAY FIDDLE

      解释

      我们使用一个循环,从0 开始,一直到数组对象之一的长度,本例为b.length。 然后对于每次迭代,我们将数组对象的值转换为附加到对象ab 的多维字符串。同时确保每次迭代的值不是undefined。在循环之后,我们将多维字符串转换为带有 JSON.parse 的 JSON 对象

      【讨论】:

        【解决方案3】:

        在 jquery 中你可以像下面这样简单地使用:

        $(a).each(function(n){ab[n]=[a[n],b[n]]; return true;});
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-02
          • 2018-04-16
          相关资源
          最近更新 更多