Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:如何将字典转换为元素列表?_Javascript - Fatal编程技术网

JavaScript:如何将字典转换为元素列表?

JavaScript:如何将字典转换为元素列表?,javascript,Javascript,最优雅的方式是什么: { '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] ] );

最优雅的方式是什么:

{
    '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的评论更新,仅添加直接属性)

使用(或)


lodash.js
underline.js
的一个有抱负的继承者,它起源于原始项目的一个分支。在我看来,任何珍惜时间的人都必须使用a。

如果你的浏览器支持和

浏览器支持表



因为,如果您只对可枚举属性感兴趣,也可以使用。在本例中,两者的结果相同。

大多数JavaScript引擎现在都支持以下功能:

const list=Object.entries({
答:“aa”,
b:“bb”
});

console.log(列表);//[['a'、['b'、['bb']]]
这难道不是数组的对象,而不是元素的字典吗?最优雅取决于你对“优雅”的个人定义。有什么问题吗?你不知道怎么做,或者你只是不喜欢你的解决方案?好奇-为什么你需要它作为一个数组?你不能按原样使用它吗?现在的标准答案是使用函数:不要忘记
hasOwnProperty()
check:)更安全的{}.hasOwnProperty.call(dict,key)。这样,在字典中包含一个名为“hasOwnProperty”的键的情况下,仍然会work@Liviu我会使用
Object.prototype.hasOwnProperty.call
then:)@Jack你看:)超安全的解决方案,没有无用的实例化:)A
.hasOwnProperty()
检查是不必要的代码,而且它不是干溶液。如果您想确保
对象.prototype
上没有任何内容,那么请测试
对象.prototype
。链接到lodash会有所帮助:)以前从未听说过lib,但它看起来不错,并且可以根据特定需求进行定制:)我强烈推荐它。它基本上是Underline.js的超集,在引擎盖下重写,产生了更好的性能和浏览器兼容性。只是想知道,为什么
对象.getOwnPropertyNames
而不是
对象.keys
?…但是
.map()
解决方案的+1。@CrazyTrain
对象.keys
也起作用,它们之间唯一的区别是
对象。getOwnPropertyNames
返回不可枚举的属性以及可枚举的属性。在我看来,OP想要整个对象,而不考虑可枚举性。是的,这就是我好奇的原因。当然,这不会有什么不同,所以不管怎样。。。是的,如果OP需要不可枚举的属性,那就是方法,@CrazyTrain当你在做一些重要的事情时,最好注意涉及可枚举性的替代方法。我编辑了答案以记录选择,并认为你和保罗的答案很像:)@Jack,几乎一样。
var obj = {'a': 'aa', 'b': 'bb'};

_.pairs(obj);

//[['a', 'aa'], ['b', 'bb']]
var obj = {'a': 'aa', 'b': 'bb'}, arr;
arr = Object.getOwnPropertyNames(obj).map(function(e) {return [e, obj[e]];});
// [["a", "aa"], ["b", "bb"]]