如何在Javascript中将数组转换为对象

时间:2017-03-14 07:13:47

标签: javascript ecmascript-6

我有一个类似

的数组
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} ) ));

3 个答案:

答案 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)