ES6数组函数,用于从数组创建对象



我想制作这个数组:

[
{ 
event: "LIB",
block_calendar: "YES",
obs: "Lorem Ipsum",
status: "Block",
},
{ 
event: "LIB"
block_calendar: "YES"
obs: "Ipsum Lorem"
status: "Block"
}
]

变成这个对象

{
event: "LIB",
obs: ["Lorem Ipsum","Ipsum Lorem"]
}

如何使用ES6实现此结果?

使用Array#reduce来累积具有所需数据的对象。数组中的Foreach对象看起来像是accumulated对象有一个lib键的条目(即它没有定义(。如果没有,则使用属性event和obs(以空数组作为开始(创建它。在这两种情况下,都将obs值添加到此数组中
要从中获得所需的数组,请使用Object#值来消除外部分组事件

注意:我稍微概括了一下您的问题,这样您就可以对不同的事件进行分组。

let arr = [
{ 
event: "LIB",
block_calendar: "YES",
obs: "Lorem Ipsum",
status: "Block",
},
{ 
event: "LIB",
block_calendar: "YES",
obs: "Ipsum Lorem",
status: "Block"
}
];
let result = Object.values(arr.reduce((acc, cur) => {
if (!acc[cur.event]) 
acc[cur.event] = {event: cur.event, obs: []};
acc[cur.event].obs.push(cur.obs);
return acc;
}, {}));
console.log(result);

最新更新