将对象数组转换为数组

时间:2017-03-19 20:33:17

标签: javascript ecmascript-6

我知道之前已经问过这个问题,但我找到的每个解决方案都没有按照我需要的方式进行。

数组

[ {key: "Title", value: "Default Text"}, {key: "Title2", value: "Default Text2"} ]

我需要的对象

{
"Title": "Default Text", 
"Title2": "Default Text2"
}

我尝试的所有东西似乎都回归了这个错误:

{ {key: "Title", value: "Default Text"}, {key: "Title2", value: "Default Text2"} }

我已经尝试了大多数我在这里找到的东西......我试过的最后一个是格式错误的是:

let obj = Object.assign({}, arrayHere);

我想要的是什么:

WHat I need

我一直在想,但是错了:

What I keep getting, but is wrong

4 个答案:

答案 0 :(得分:2)

使用Array.prototype.reduce()功能:

var arr = [ {key: "Title", value: "Default Text"}, {key: "Title2", value: "Default Text2"} ],
    result = arr.reduce((r,o) => {r[o.key] = o.value; return r; }, {});

console.log(result);

答案 1 :(得分:0)

const a = [ {key: "Title", value: "Default Text"}, {key: "Title2", value: "Default Text2"} ];

function convertArr(arr) {
    const res = {};

    a.forEach((item) => 
       res[item.key] = item.value;
    })
    return res;
}

convertArr(a);

答案 2 :(得分:0)

您可以使用Array#mapObject.assign

分配单个创建的对象



var array = [{ key: "Title", value: "Default Text" }, { key: "Title2", value: "Default Text2" }];
    object = Object.assign({}, ...array.map(o => ({ [o.key]: o.value })));
    
console.log(object);




答案 3 :(得分:0)

使用Array.prototype.map(),

var Object = [ {key: "Title", value: "Default Text"}, {key: "Title2", value: "Default Text2"} ];

var result = Object.map(function(obj) {
             var rObj = {};
             rObj[obj.key] = obj.value;
             return rObj; });