根据对象数组中的唯一键进行分组 [英] Grouping based on unique key in array of object

查看:47
本文介绍了根据对象数组中的唯一键进行分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在研究一个小型的React项目,目前我还停留在这个项目上.我需要根据数组对象键进行分组.

I am working on a small React project where I am stuck at this point. I need to make a grouping based on array object key.

下面是数组:

   let addOnFeatures = [
    {"name": "feature1", id: 101, cost: 100},
    {"name": "feature2", id: 102, cost: 200},
    {"name": "feature1", id: 103, cost: 300},
    {"name": "feature3", id: 104, cost: 40}
    ]

我需要根据名称键进行分组,以便每个与通用名称相关的ID都应显示在其自己的标签上.

I need to make a grouping based on name key so that every id related to common name should be displayed on its own tab.

预期输出应为

*uniqueFeaturename
id: cost

示例:

 1. feature1
   101 : 100
   103 : 300
 2. feature2
    102 : 200
 3. feature3
    104: 40

推荐答案

只需利用 Array.prototype.reduce 并向对象添加元素,如

Just make use of Array.prototype.reduce and add elements to object like

let addOnFeatures = [
    {"name": "feature1", id: 101, cost: 100},
    {"name": "feature2", id: 102, cost: 200},
    {"name": "feature1", id: 103, cost: 300},
    {"name": "feature3", id: 104, cost: 40}
]

const res = addOnFeatures.reduce((acc, item) => {
   if(acc[item.name]) {
      acc[item.name] = {...acc[item.name], [item.id]: item.cost};
   } else {
      acc[item.name] = {[item.id]: item.cost};
   }
   return acc;
}, {});

console.log(res);

这篇关于根据对象数组中的唯一键进行分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆