Javascript Oneliner从JS/ExtJS 4中的映射数组创建映射

Javascript Oneliner从JS/ExtJS 4中的映射数组创建映射,javascript,arrays,extjs,map,Javascript,Arrays,Extjs,Map,是否可以从一行中的贴图数组创建贴图。使用纯JS还是ExtJS4.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"} 预期产出 [{key:"U

是否可以从一行中的贴图数组创建贴图。使用纯JS还是ExtJS4.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"}
预期产出

[{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存在,但我不知道它是否可以返回数组以外的其他类型。

使用JS的本机方法:

不是一个班轮,但仍然紧凑。您可以将回调的主体替换为

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;
}
var obj={};
对于(变量i=0,l=arr.length;i
跨不同浏览器使用是否安全?该链接包含一个表,其中列出了本机支持它的浏览器。它还提供了一个多边形填充。似乎ExtJS没有这样的方法。我看了ExtJS文档,它实际上将
reduce
列为本机数组方法。我不知道,如果它不存在,也许它正在提供方法。