0

是否可以从一行中的地图数组创建地图。使用纯 JS 还是 ExtJS 4.0?

样本输入

[{key:"US", value:"United States"}, {key:"JO", value:"Jordan"}, {key:"PA", value: "Palestine"}, {key:"CA", value:"Canada"}]

预期产出

{"US":"United States", "JO": "Jordan", "PA":"Palestine", "CA":"Canada"}

注意:我知道 Ext.Array.map 存在,但我不知道它是否可以返回数组以外的其他类型。

4

1 回答 1

2

使用 JS 原生的reduce [MDN]方法:

var obj = arr.reduce(function(obj, val) {
    obj[val.key] = val.value;
    return obj;
}, {});

不是单线,但仍然紧凑。您可以将回调的主体替换为

return obj[val.key] = val.value, obj;

但对于不了解逗号运算符的人来说,这可能有点晦涩难懂。

作为替代方案,您可以只遍历数组:

var obj = {};

for (var i = 0, l = arr.length; i < l; i++) {
    obj[arr[i].key] = arr[i].value;
}
于 2013-04-25T20:05:55.797 回答