我想制作这个数组:
[
{
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);