如何将对象数组映射到键值?

时间:2019-07-22 16:09:25

标签: javascript arrays ecmascript-6

在JS中,我有一个由对象组成的数组A = [{k:"a",v:3},{k:"b",v:4}],用于定义键值。我想生成数组B

let B = 
((A)=>{
    let B=[];
    for(let i of A)
        B[i.k]=i.v;
    return B;
})(A);

以便将A的对象键k映射到B的键,并将值v映射为其值。 通过数组mapreduce函数更容易实现吗?您能帮我正确的语法吗?因此,B(对于我们的示例)为:

let B = [];
B["a"]=3;
B["b"]=4;
console.log( B );
[ a: 3, b: 4 ] 

2 个答案:

答案 0 :(得分:2)

您可以将Object.fromEntries与键/值对的映射数组一起使用。

var array = [{ k: "a", v: 3 }, { k: "b", v: 4 }],
    object = Object.fromEntries(array.map(({ k, v }) => [k, v]));

console.log(object);

答案 1 :(得分:1)

您可以放下IIFE并使用

const B = {};
for (const {k, v} of A)
    B[k] = v;

也可以使用reduce解决方案,但不够简洁:

const B = A.reduce((acc, {k, v}) => {
    acc[k] = v;
    return acc;
}, {});