我服务的可能输出之一如下。
[{
"key": 1,
"val": 0
}, {
"key": 2,
"val": 0
}]
是否有一个函数可以将其转换为如下所示的对象?
{
"1":0,
"2":0
}
我的目的是能够将对象值作为地图读取,例如o["1"]
,即:if (o["1"] == 0) {...
。
答案 0 :(得分: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 :(得分: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>');
答案 2 :(得分:1)
您可以使用
在javascript中执行此操作target = {};
source.forEach(function(e) {
target[e.key] = e.val;
});
答案 3 :(得分:1)
我不认为纯Javascript中有一个。也许像jQuery这样的库会有类似的东西。不过,你可以用很少的代码来做自己的事情。纯粹的JS:
var o = {};
for (var i = 0; i < json.length; i++) {
o[json[i].key] = json[i].val;
}