Javascript将对象映射转换为Array

时间:2013-05-18 05:46:01

标签: javascript

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

{
    "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" }}, 
];

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

2 个答案:

答案 0 :(得分:4)

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

var myArray=[];
for (k in myObj) {
    if(myObj.hasOwnProperty(k)){
        var newObj = {};
        newObj[k] = myObj[k];
        myArray.push(newObj);
    }
}

答案 1 :(得分:1)

更简洁(在ECMAscript 5中):

function toArray (obj) {
  return Object.keys (obj).map (function (k) {
    var v = {}; v[k] = obj[k]; return v; 
  });
}