Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript-ES6数组函数,用于从数组创建对象_Javascript_Vue.js_Ecmascript 6 - Fatal编程技术网

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
方法,从上面的答案中找到了一个自适应解决方案,从而解决了我的问题。