2013-04-25 56 views
0

是否可以从一系列地图在一行中创建地图。使用纯JS还是ExtJS 4.0?Oneliner从JS/ExtJS中的地图阵列创建地图4

采样输入

[{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存在,但我不知道它是否能够返回其它不同类型的比阵列。

回答

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; 
} 
+0

是否可以安全使用的跨不同的浏览器? – Isaac 2013-04-25 20:07:16

+0

并感谢您的回答! – Isaac 2013-04-25 20:08:20

+0

该链接包含一个列出本机支持它的浏览器的表格。它还提供了一个polyfill。似乎ExtJS没有这样的方法。 – 2013-04-25 20:09:02