简体   繁体   English

Map 值键入数组 object

[英]Map value to key in array object

Hello I have a object array like below.您好,我有一个 object 数组,如下所示。

dataSource = [
      {
        NAME: "Jan",
        VALUE: 5,
        GRUP: "Grup 1"
      },
      {
        NAME: "Feb",
        VALUE: 15,
        GRUP: "Grup 1"
      },
      {
        NAME: "Mar",
        VALUE: 3,
        GRUP: "Grup 1"
      }
    ]

I want to map this to below expected output我想 map 这低于预期 output

[
 {
    Base:"Grup 1",
    Jan:5,
    Feb:15,
    Mar:3
 }
]

I tried我试过了

 let dataSource = [ { NAME: "Jan", VALUE: 5, GRUP: "Grup 1" }, { NAME: "Feb", VALUE: 15, GRUP: "Grup 1" }, { NAME: "Mar", VALUE: 3, GRUP: "Grup 1" } ] console.log(GetObject(dataSource)) function GetObject(arr){ return arr.map(el=> { let obj={}; obj[el.NAME]=el.VALUE; obj.BASE=el.GRUP return obj } ); }

but it doesn't give as expected result.但它没有给出预期的结果。 It gives me three object array instead of multiple attributes in one object.它给了我三个 object 数组,而不是一个 object 中的多个属性。

How can I map this?我怎么能 map 这个?

Thanks in advance提前致谢

Store the groups in an object:将组存储在 object 中:

const groups = {};

for (const data of dataSource) {
    if (!(data.GRUP in groups)) {
        groups[data.GRUP] = {Base: data.GRUP};
    }
    groups[data.GRUP][data.NAME] = data.VALUE;
}

const result = Object.values(groups);
console.log(result);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM