比如说我有一个以下的对象图:
{
"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" } ],
];
我有一个需要数组的函数,但我从第三方插件接收的数据是在对象数组中。如果有一些简单的方法可以在两者之间完成转换,那就太好了。
答案 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)]
一样简单。