1

比如说我有一个如下的对象图:

{
    "key1" : { data: "data1", extra: "none" },
    "key2" : { data: "data2", extra: "none" },
    "key3" : { data: "data3", extra: "none" },
    "key4" : { data: "data4", extra: "none" }, 
};

有没有一种方便的方法可以将它转换为这样的数组:

[
    { "key1" : { data: "data1", extra: "none" }},
    { "key2" : { data: "data2", extra: "none" }},
    { "key3" : { data: "data3", extra: "none" }},
    { "key4" : { data: "data4", extra: "none" }}, 
];

我有一个需要数组的函数,但我从 3rd 方插件接收的数据位于对象数组中。如果有一些简单的方法可以在两者之间完成转换,那就太好了。

4

2 回答 2

4

遍历对象中的属性并将它们推送到数组中:

var myArray=[];
for (k in myObj) {
    if(myObj.hasOwnProperty(k)){
        var newObj = {};
        newObj[k] = myObj[k];
        myArray.push(newObj);
    }
}
于 2013-05-18T05:51:32.903 回答
1

更简洁(在 ECMAscript 5 中):

function toArray (obj) {
  return Object.keys (obj).map (function (k) {
    var v = {}; v[k] = obj[k]; return v; 
  });
}
于 2013-05-18T06:15:15.177 回答