Javascript将对象映射转换为多维数组

时间:2013-05-18 06:16:44

标签: 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" } ], 
];

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

3 个答案:

答案 0 :(得分:4)

尝试此功能:

function convert(original) {
    var multiArray = [];
    for(var key in original) { multiArray.push([ key, original[key] ]); }
    return multiArray;
}

请参阅 demo fiddle

像这样使用:

var myObject = {
    "key1" : { data: "data1", extra: "none" },
    "key2" : { data: "data2", extra: "none" },
    "key3" : { data: "data3", extra: "none" },
    "key4" : { data: "data4", extra: "none" }, 
};
var myMultiArray = convert(myObject);

答案 1 :(得分:3)

如果您制作如下所示的辅助函数pair,则标准键/映射就足够了:

Object.keys(m).map(pair.bind(m))
function pair(x){return [x, this[x]]}

答案 2 :(得分:3)

在ES6中,它就像[[e, o[e]] for (e in o)]一样简单。