我有一个类似
的数组let arr = [
{ key: "Text1", value: "Line 1" },
{ key: "Text2", value: "Line 2" },
{ key: "Text3", value: "Line 3" }
]
我想把它变成
let obj = {
"Text1": "Line1",
"Text2": "Line2",
"Text3": "Line3"
}
在es6中,我正在尝试这样的事情,但那肯定是错的。有什么帮助吗?
let temp = Object.assign({}, ...arr.map( {key, value} => ( {key, value} ) ));
答案 0 :(得分:3)
你可以用reduce来解决这个问题:
arr.reduce((o, el) => {
o[el.key] = el.value;
return o;
}, {});
返回
{Text1: "Line 1", Text2: "Line 2", Text3: "Line 3"}
答案 1 :(得分:3)
您可以使用Object.assign
以及解构和展开的syntex作为映射对象的项目。
基本上,你需要在参数和计算密钥周围加上更多的括号。
Object.assign({}, ...arr.map(({ key, value }) => ({ [key]: value })));
// ^ ^ parenthesis
// ^ ^ computed property
let arr = [{ key: "Text1", value: "Line 1" }, { key: "Text2", value: "Line 2" }, { key: "Text3", value: "Line 3" }],
result = Object.assign({}, ...arr.map(({ key, value }) => ({ [key]: value })));
console.log(result);

答案 2 :(得分:2)
你可以这样做
let arr = [
{ key: "Text1", value: "Line 1" },
{ key: "Text2", value: "Line 2" },
{ key: "Text3", value: "Line 3" }
]
var obj ={};
arr.forEach(function(value){
obj[value.key]=value.value;
})
console.log(obj)