最优雅的解决方法是什么:
{
'a': 'aa',
'b': 'bb'
}
进入这个:
[
['a', 'aa'],
['b', 'bb']
]
答案 0 :(得分:10)
只需遍历按键:
var dict = { 'a': 'aa', 'b': 'bb' };
var arr = [];
for (var key in dict) {
if (dict.hasOwnProperty(key)) {
arr.push( [ key, dict[key] ] );
}
}
Fiddle(根据@ Jack的评论更新,仅添加直接属性)
答案 1 :(得分:2)
var obj = {'a': 'aa', 'b': 'bb'};
_.pairs(obj);
//[['a', 'aa'], ['b', 'bb']]
lodash.js
是underscore.js
的有力继任者,起源于原始项目的分支。在我看来,任何重视时间的人都必须使用。
答案 2 :(得分:2)
我认为以下解决方案非常优雅:
function toList(dict) {
return Object.keys(dict).map(function (key) {
return [key, dict[key]];
});
}
现在您可以按如下方式使用它:
var list = toList({
a: "aa",
b: "bb"
});
它适用于所有现代浏览器,无需外部库。请参阅演示:http://jsfiddle.net/pEhpu/
答案 3 :(得分:1)
如果您的浏览器支持Object.getOwnPropertyNames
和Array.prototype.map
var obj = {'a': 'aa', 'b': 'bb'}, arr;
arr = Object.getOwnPropertyNames(obj).map(function(e) {return [e, obj[e]];});
// [["a", "aa"], ["b", "bb"]]
浏览器支持表here
作为Crazy Train points out,如果您只对可枚举属性感兴趣,Object.keys
也会有效。在这个例子中,两者都会有相同的结果。