2016-05-10 106 views
1

我的服務可能的輸出之一如下。如何將數組轉換爲地圖?

[{ 
    "key": 1, 
    "val": 0 
}, { 
    "key": 2, 
    "val": 0 
}] 

是否有一個函數可以將它轉換爲下面的對象?

{ 
    "1":0, 
    "2":0 
} 

我的目的是能夠讀取的對象值作爲地圖,如o["1"],即:if (o["1"] == 0) {...

+0

請在使用之前提出您的問題。 –

+0

感謝您的通知。可能我沒有使用正確的關鍵字進行搜索。 – Nick

回答

2

您可以使用Array#forEach進行迭代,併爲所需的屬性賦值。

var array = [{ "key": 1, "val": 0 }, { "key": 2, "val": 0 }], 
 
    object = {}; 
 

 
array.forEach(function (a) { 
 
    object[a.key] = a.val; 
 
}); 
 

 
document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');

3

爲此,您可以用reduce

var data = [{"key": 1, "val": 0}, {"key": 2, "val": 0}]; 
 

 
var result = data.reduce((obj, e) => { 
 
    obj[e.key]= e.val; 
 
    return obj; 
 
}, {}); 
 

 
console.log(result)

1

你可以做到這一點在JavaScript

target = {}; 
source.forEach(function(e) { 
    target[e.key] = e.val; 
}); 
1

我不認爲在純Javascript中有一個。也許像jQuery這樣的庫會有類似的東西。不過,您可以使用少量代碼來完成自己的任務。在純JS中:

var o = {}; 

for (var i = 0; i < json.length; i++) { 
    o[json[i].key] = json[i].val; 
}