【问题标题】:Associative array values to json关联数组值到 json
【发布时间】:2012-10-12 20:21:13
【问题描述】:

我有以下 javascript 关联数组

var list = {};
list['a'] = 'one';
list['b'] = 'two';
list['c'] = 'two';

通过 jquery ajax,我只想以 json 格式传递列表数组的值。

{"list":["one","two","two"]}

我该怎么做?

【问题讨论】:

  • 旁注:它不是一个关联数组,它是一个对象。

标签: javascript jquery ajax json


【解决方案1】:

您可以使用$.map() 提取值:

$.ajax({
    data: {
        list: $.map(list, function(val) { return val; })
    },
    ...
});

【讨论】:

    【解决方案2】:
    var list = {};
    list['a'] = 'one';
    list['b'] = 'two';
    list['c'] = 'two';
    
    var newObj = {
        "list": []
    };
    
    for (key in list) {
        newObj.list.push(list[key]);
    }
    
    alert(JSON.stringify(newObj));​
    

    Demo.

    【讨论】:

      【解决方案3】:

      javascript 中没有关联的数组,只有属性没有顺序的对象。这意味着如果您想构建它们的数组,您需要先对属性进行排序:

      var list = {a:'one', b:'two', c:'two'};
      
      var result = {list:[]},
          keys = [];
      for (var key in list)
          keys.push(key);
      keys.sort();
      for (var i=0; i<keys.length; i++)
          result.list[i] = list[keys[i]];
      return JSON.stringify(result);
      

      或者使用一些辅助函数也一样,可能并非所有浏览器都原生支持:

      return {list: Object.keys(list).sort().map(function(key) { return list[key]; })};
      

      【讨论】:

        猜你喜欢
        • 2011-03-05
        • 2011-05-24
        • 1970-01-01
        • 2017-09-17
        • 2019-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多