如何按对象属性对对象进行分组

约翰

我有这个带有一些对象的数组,

var arr = [
  {type: "motorbike", model: "ducati monster 797", quantity: 2},
  {type: "car", model: "audi", quantity: 4},
  {type: "truck", model: "ford", quantity: 1},
  {type: "car", model: "bmw", quantity: 1},
  {type: "bicycle", model: "giant", quantity: 3},
  {type: "truck", model: "MAN", quantity: 1},
  {type: "car", model: "dodge 2012", quantity: 3}
]

我如何通过每个对象的“类型”属性对对象进行分组以获得这种格式:

var arr2 = [
  {
    type: 'motorbike',
    data: [{model: "ducati monster 797", quantity: 2}]
  },
  {
    type: 'car',
    data: [
      {model: "audi", quantity: 4},
      {model: "bmw", quantity: 1},
      {model: 'dodge 2012', quantity: 3},
    ]
  },
  {
    type: 'truck',
    data: [
      {model: "ford", quantity: 1},
      {model: "MAN", quantity: 1}
    ]
  }
];
穆罕默德·乌斯曼

您可以使用.reduce(),.map()Object.entries()获得所需的输出:

const data = [
  {type: "motorbike", model: "ducati monster 797", quantity: 2},
  {type: "car", model: "audi", quantity: 4},
  {type: "truck", model: "ford", quantity: 1},
  {type: "car", model: "bmw", quantity: 1},
  {type: "bicycle", model: "giant", quantity: 3},
  {type: "truck", model: "MAN", quantity: 1},
  {type: "car", model: "dodge 2012", quantity: 3}
];

const result = Object.entries(data.reduce((r, {type, ...rest}) => {
  r[type] = r[type] || [];
  r[type].push(rest);
  return r;
}, {})).map(([type, data]) => ({type, data}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按属性对对象列表进行分组

按对象的属性以外的对象对对象列表进行分组

如何根据属性对对象进行分组

按对象属性对对象字典进行分组

如何按属性对对象进行排名?

如何按对象的值对对象数组进行分组并在新属性中求和

如何按对象的变量对对象进行分组?

Java-按属性对对象进行分组和排序

按属性 javascript 对对象数组进行分组

按属性对对象数组进行分组并对值求和

按属性对对象列表进行分组,分为多个列表。

如何根据对象中的属性对对象数组进行分组

如何按列表中的属性对对象进行分组和计数?

如何使用lodash对对象数组中的属性进行分组?

如何按属性值对对象数组进行排序

如何按属性 PHP 对对象数组进行排序

如何按公共属性对对象数组进行分组并将其他属性放在一起

如何在对另一个属性求和时按某个属性对对象进行分组

如何按对象的子对象对对象列表进行最佳分组?

使用Java 8按类型列表的对象属性对对象列表进行分组:JAVA

按属性对对象数组进行排序

按值对对象属性进行排序

按嵌套属性对对象进行排序

按多个属性对对象进行排序

Java按对象列表中的值对对象进行分组

按javascript对象中键的值对对象进行分组

按多个属性对对象进行分组并合并数组属性

如何对对象数组进行分组?

如何通过按通用名称对对象进行分组来创建对象列表