javascript-ES6数组函数,用于从数组创建对象
我想制作这个数组:javascript-ES6数组函数,用于从数组创建对象,javascript,vue.js,ecmascript-6,Javascript,Vue.js,Ecmascript 6,我想制作这个数组: [ { event: "LIB", block_calendar: "YES", obs: "Lorem Ipsum", status: "Block", }, { event: "LIB" block_calendar: "YES" obs: "Ipsum Lorem&quo
[
{
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实现此结果?使用来累积具有所需数据的对象。数组中的Foreach对象查看accumultaed对象是否有lib键的条目(即,它不是未定义的)。如果不是,则使用属性事件和obs(以空数组作为开始)创建它。在这两种情况下,将obs值添加到此数组。若要从此数组中获取所需的数组,请使用以清除外部分组事件。
注意:我稍微概括了一下您的问题,这样您就可以对不同的事件进行分组
让arr=[
{
事件:“LIB”,
块日历:“是”,
obs:“公共知识”,
状态:“阻止”,
},
{
事件:“LIB”,
块日历:“是”,
obs:“Ipsum Lorem”,
状态:“块”
}
];
让结果=对象值(arr.reduce)(acc,cur)=>{
如果(!acc[当前事件])
acc[cur.event]={event:cur.event,obs:[]};
acc[cur.event].obs.push(cur.obs);
返回acc;
}, {}));
控制台日志(结果)代码>这是相当标准的“groupBy”操作。如果你还没有这样做,试着研究一下这个术语。如果您已经尝试过解决这个问题,但它没有按预期工作,那么请向我们展示该代码。这里的目标是帮助您编写代码,而不是为您完成所有工作谢谢,是的,这正是我要找的。我应该多搜索一点,在这个问题上花更多的精力,你是对的。我只是尽量简单,我的坏朋友。但是,我通过使用.reduce
方法,从上面的答案中找到了一个自适应解决方案,从而解决了我的问题。