从数组对初始化Javascript字典

时间:2015-04-20 22:00:24

标签: javascript python arrays dictionary

我有一个看起来像这样的数组:[["key1", "value1"], ["key2", "value2"]]。我想要一个如下字典:{"key1": "value1", "key2": "value2"}。在Python中,我可以将数组传递给dict初始值设定项。是否有一些在Javascript中执行此操作的等效方法,或者我是否一直在初始化一个空字典并将键/值对一次添加到字典中?

2 个答案:

答案 0 :(得分:2)

Array#reduce实际上非常简单:

var obj = yourArray.reduce(function(obj, entry) {
    obj[entry[0]] = entry[1];
    return obj;
}, {});

Array#reduce循环遍历数组中的条目,将它们重复传递给函数以及使用第二个参数初始化的“累加器”。

或许Array#forEach在这种情况下会更清晰,更简洁:

var obj = {};
yourArray.forEach(function(entry) {
    obj[entry[0]] = entry[1];
});

或者是简单的for循环:

var obj = {};
var index, entry;
for (index = 0; index < yourArray.length; ++index) {
    entry = yourArray[index];
    obj[entry[0]] = entry[1];
}

答案 1 :(得分:1)

假设你有一个pairs变量,你可以使用map()函数解决方法(不是很优雅,因为map应该在其他范围内使用):

var convertedDict = {};
pairs.map(function(pair) {
    convertedDict[pair[0]] = pair[1];
});