我的服務可能的輸出之一如下。如何將數組轉換爲地圖?
[{
"key": 1,
"val": 0
}, {
"key": 2,
"val": 0
}]
是否有一個函數可以將它轉換爲下面的對象?
{
"1":0,
"2":0
}
我的目的是能夠讀取的對象值作爲地圖,如o["1"]
,即:if (o["1"] == 0) {...
。
我的服務可能的輸出之一如下。如何將數組轉換爲地圖?
[{
"key": 1,
"val": 0
}, {
"key": 2,
"val": 0
}]
是否有一個函數可以將它轉換爲下面的對象?
{
"1":0,
"2":0
}
我的目的是能夠讀取的對象值作爲地圖,如o["1"]
,即:if (o["1"] == 0) {...
。
您可以使用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>');
爲此,您可以用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)
你可以做到這一點在JavaScript
target = {};
source.forEach(function(e) {
target[e.key] = e.val;
});
我不認爲在純Javascript中有一個。也許像jQuery這樣的庫會有類似的東西。不過,您可以使用少量代碼來完成自己的任務。在純JS中:
var o = {};
for (var i = 0; i < json.length; i++) {
o[json[i].key] = json[i].val;
}
請在使用之前提出您的問題。 –
感謝您的通知。可能我沒有使用正確的關鍵字進行搜索。 – Nick