【问题标题】:convert json array to javascript array将 json 数组转换为 javascript 数组
【发布时间】:2011-08-02 21:03:23
【问题描述】:

我有一个 json 数组,我想将它转换成一个普通的 javascript 数组:

这是我的 json 数组:

var users = {"0":"John","1":"Simon","2":"Randy"}

如何将它转换成这样的纯 JavaScript 数组:

var users = ["John", "Simon", "Randy"]

【问题讨论】:

标签: javascript json


【解决方案1】:

users 已经是一个 JS 对象(不是 JSON)。但是给你:

var users_array = [];
for(var i in users) {
    if(users.hasOwnProperty(i) && !isNaN(+i)) {
        users_array[+i] = users[i];
    }
}

编辑: 在数组中的正确位置插入元素。谢谢@RoToRa

也许一开始就不创建这种对象会更容易。它是如何创建的?

【讨论】:

  • 这个 json 数组是用 Zend_Json::encode 动态创建的,但是响应被传回一个 js 函数,它接受一个普通的 javascript 数组。
  • @dskanth:如果您没有做任何花哨的事情,请使用本机函数 json_encode。它只会将关联数组转换为 JSON 对象,将数字索引的对象转换为数组。
  • 小心,您的代码可能不会将值分配给正确的索引,因为您假设对象属性是迭代排序的。 if (!isNaN(+i)) {users_array[+i] = users[i]} 可能会更好。
  • @RoToRa:你是对的。不,我没有假设它们已排序,但我没有注意顺序......我会将其添加到我的答案中。
【解决方案2】:

只是为了好玩 - 如果您知道数组的长度,那么以下将起作用 (and seems to be faster):

users.length = 3;
users = Array.prototype.slice.call(users);

【讨论】:

    【解决方案3】:

    嗯,这里有一个 Jquery+Javascript 的解决方案,有兴趣的可以看看:

    var user_list = [];
    
    $.each( users, function( key, value ) {
        user_list.push( value );    
    });
    
    console.log(user_list);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 2017-08-21
      相关资源
      最近更新 更多