如何将数组转换为地图?

时间:2016-05-10 19:56:15

标签: javascript

我服务的可能输出之一如下。

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

是否有一个函数可以将其转换为如下所示的对象?

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

我的目的是能够将对象值作为地图读取,例如o["1"],即:if (o["1"] == 0) {...

4 个答案:

答案 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;
}