Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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按数组字段分组并减少_Javascript_Arrays_Vue.js_Reduce - Fatal编程技术网

Javascript按数组字段分组并减少

Javascript按数组字段分组并减少,javascript,arrays,vue.js,reduce,Javascript,Arrays,Vue.js,Reduce,我有这个数组。我想按createdAt分组 [ { "createdAt": "2021-05-17T14:55:29.836Z", "machine": { "label": "MAQ_100", }, }, { "createdAt": "2021-03-10T13:22:4

我有这个数组。我想按
createdAt
分组

 [
    {
      "createdAt": "2021-05-17T14:55:29.836Z",
      "machine": {
        "label": "MAQ_100",
      },
    },
    {
      "createdAt": "2021-03-10T13:22:45.694Z",
      "machine": {
        "label": "MAQ_33",
      },
    },
    {
      "createdAt": "2021-03-10T13:22:44.766Z",
      "machine": {
        "label": "MAQ_33",
      },
    },
    {
      "createdAt": "2019-04-13T10:06:13.120Z",
      "machine": {
        "label": "MAQ_33",
      },
    },
    {
      "createdAt": "2015-05-01T09:48:08.463Z",
      "machine": {
        "label": "MAQ_33",
      },
    },
    {
      "createdAt": "2015-05-01T09:48:08.463Z",
      "machine": {
        "label": "MAQ_77",
      },
    }
],
这是我预期的结果。我希望前面的数组按createdAt分组,如果每个项都有相同的createdAt,则推送它

[
    {"createdAtDates": ["17-05-2021"]}, 
    {"createdAtDates: ["10-03-2021","10-03-2021"]}, 
    {"createdAtDates": ["13-04-2019"]},
    {"createdAtDates": ["01-05-2015","01-05-2015"]}
]
这就是我所做的:

grouppedPallets() {
     return this.items.reduce(function (pallets, pallet) {
       const groups = pallets.filter((item) => item.date === pallet.date);
       const found = groups.length === 1;
       const group = found ? groups[0] : { createdAt: pallet.date, createdAtDates: [] };

       group.createdAtDates.push(pallet.date);
       if (!found) pallets.push(group);

       return pallets;
     }, []);
},

items() {
     return this.palletsConnection
       ? 
         this.palletsConnection.values.map((pallet) => ({
           ...pallet,
           date: formatDate(pallet.createdAt), //FORMAT DD-MM-YYYY
         }))
       : [];
   },
这就是my
grouppedPallet()
所做的:

[
    {
      "createdAt": "17-05-2021",
      "createdAtDates": ["17-05-2021"]
    },
    {
      "createdAt": "10-03-2021",
      "createdAtDates": ["10-03-2021","10-03-2021"]
    },
    {
      "createdAt": "13-04-2019",
      "createdAtDates": ["13-04-2019"]
    },
    {
      "createdAt": "01-05-2015",
      "createdAtDates":["01-05-2015","01-05-2015"]
    }
]

我只想在减少数组后存储
createdAtDates

您可以轻松地在
数组上实现第一个映射,并使用regex以
dd mm yyyy
格式获取数据,然后使用reduce生成最终结果

const项=[
{
创建日期:“2021-05-17T14:55:29.836Z”,
机器:{
标签:“MAQ_100”,
},
},
{
创建日期:“2021-03-10T13:22:45.694Z”,
机器:{
标签:“MAQ_33”,
},
},
{
创建日期:“2021-03-10T13:22:44.766Z”,
机器:{
标签:“MAQ_33”,
},
},
{
创建日期:“2019-04-13T10:06:13.120Z”,
机器:{
标签:“MAQ_33”,
},
},
{
创建日期:“2015-05-01T09:48:08.463Z”,
机器:{
标签:“MAQ_33”,
},
},
{
创建日期:“2015-05-01T09:48:08.463Z”,
机器:{
标签:“MAQ_77”,
},
},
];
常量结果=项
.map({createdAt})=>{
返回{
createdAtDates:createdAt
.拆分(“T”)[0]
.replace(/(\d{4})-(\d{2})-(\d{2})/,“$3-$2-$1”),
};
})
.减少((会计科目,当前)=>{
const{createdAtDates}=curr;
const isExist=acc.find((o)=>{
返回o.createdAtDates[0]==createdAtDates;
});
如果(存在){
isExist.createDattates.push(createDattates);
}否则{
acc.push({createdAtDates:[createdAtDates]});
}
返回acc;
}, []);
控制台日志(结果)