什么是最优雅的方式来改变这个:
{
'a': 'aa',
'b': 'bb'
}
进入这个:
[
['a', 'aa'],
['b', 'bb']
]
只需遍历键:
var dict = { 'a': 'aa', 'b': 'bb' };
var arr = [];
for (var key in dict) {
if (dict.hasOwnProperty(key)) {
arr.push( [ key, dict[key] ] );
}
}
小提琴 (根据@Jack 的评论更新,仅添加直接属性)
大多数 JavaScript 引擎现在都支持该Object.entries
功能:
const list = Object.entries({
a: "aa",
b: "bb"
});
console.log(list); // [['a', 'aa'], ['b', 'bb']]
对于较旧的引擎,您可以为它编写一个 polyfill,如下所示:
if (typeof Object.entries !== "function")
Object.entries = obj => Object.keys(obj).map(key => [key, obj[key]]);
希望有帮助。
var obj = {'a': 'aa', 'b': 'bb'};
_.pairs(obj);
//[['a', 'aa'], ['b', 'bb']]
lodash.js
是一个有抱负的继任者underscore.js
,起源于原始项目的一个分支。在我看来,任何珍惜时间的人都必须使用它。
如果您的浏览器支持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"]]
浏览器支持表在这里
正如Crazy Train 指出的那样,如果您只对可枚举的属性感兴趣,那么也可以Object.keys
。在此示例中,两者将具有相同的结果。