通过通用键对对象数组进行分组,将嵌套属性合并到数组中

和Qlimax:

假设我有这个数组:

[
    {"type": "A",   "status": "CREATED",        "name": "Jack"}, 
    {"type": "A",   "status": "CREATED",        "name": "John"}, 
    {"type": "A",   "status": "UPDATED",        "name": "Alex"}, 
    {"type": "B",   "status": "UPDATED",        "name": "Jane"}
]

我想有一个按“ type ”和“ status分组的新数组,并在列表中列出名称。这是所需的输出:

[
    {"type": "A",   "status": "CREATED",        "name-list": ["Jack", "John"]}, 
    {"type": "A",   "status": "UPDATED",        "name-list": ["Alex"]}, 
    {"type": "B",   "status": "UPDATED",        "name-list": ["Jane"]}
]

如您所见,数组的第一个对象包含2个名称,因为它们属于相同的“ 类型 ”和“ 状态 ”。(名称列表仅是示例,也可以保留名称,重要的是它应该是字符串/对象的数组)

我必须在html页面中表示这些数据,因此需要能够通过JavaScript循环它们。

叶夫根·戈本科夫(Yevgen Gorbunkov):

您可以通过Array.prototype.reduce()构建,遍历您的源数组Map,将typestatus组合为键和相应的对象,并合并name为值。然后提取Map.prototype.values()来自Map

const src = [{"type":"A","status":"CREATED","name":"Jack"},{"type":"A","status":"CREATED","name":"John"},{"type":"A","status":"UPDATED","name":"Alex"},{"type":"B","status":"UPDATED","name":"Jane"}],

     result = [...src
        .reduce((r, o) => {
          const key = o.type+'\ud8ff'+o.status,
                match = r.get(key)
          match ? match.name.push(o.name) : r.set(key, {...o, name: [o.name]})
          return r
        }, new Map())
        .values()
      ]
      
console.log(result)
.as-console-wrapper{min-height:100%;}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过通用属性对对象进行分组,将其余属性合并为数组中的单独对象

通过通用属性将嵌套数组中的对象分组为小计数组

如何通过键对对象数组进行分组

如何通过数组中嵌套的子对象对象对对象进行分组

通过子属性对对象数组进行分组

通过键从对象合并到对象数组

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

如何通过特定键在数组中按字母顺序对对象进行分组?

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

合并到数组中时如何对属性键进行排序

在javascript中对对象数组进行分组

在AngularJS中对对象数组进行分组

根据数组类型键对对象数组进行分组

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

如何通过作为数组的子属性有效地对对象数组进行分组?

如何按键对对象数组进行分组并对嵌套对象属性求和

使用对象键对对象数组进行分组

通过嵌套键对数组进行分组

如何基于键对对象的JavaScript数组进行分组

在属性等于的数组中对对象的子数组进行分组-Python

如何基于Javascript中的多个数组属性对对象数组进行分组

如何通过 JS 中的三个不同属性对嵌套对象数组进行分组

使用Lodash通过多个属性对对象数组进行分组

使用下划线groupby通过多个属性对对象数组进行分组

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

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

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

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

在 n 级嵌套数组中对对象值进行分组