2013-04-25 58 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