如何转换对象列表,如:
[{id:3, value:"value1"}, {id:4, value:"value2"}]
到
{3:"value1", 4:"value2"}
我不确定这是最佳解决方案。但是工作。
var list = [{id:3, value:"value1"}, {id:4, value:"value2"}]
var result = Object.assign({}, ...list.map((obj, index)=>{
return {[obj.id]:obj.value};
}))
console.log(result);

答案 0 :(得分:1)
您可以将Object.assign
与spread syntax ...
和Array#map
用于computed property names的对象。
var array = [{ id: 3, value: "value1" }, { id: 4, value: "value2" }],
result = Object.assign(...array.map(({ id, value }) => ({ [id]: value })));
console.log(result);

答案 1 :(得分:1)
取决于您对" best"的定义。但是,当我尝试使用reduce()
解决方案和jsperf循环时,好的旧for
循环是最快的:)
for

答案 2 :(得分:0)
减少将解决您的问题:
var list = [{id: "foo", value: "bar"}, {"id":"baz", value:"bad"}];
var result = list.reduce((obj, item) => {
obj[item.id] = item.value;
return obj
}, {});
console.log(result);