根据JSON数据为多个项目创建复杂的表

创造的

我有一个看起来像这样的JSON

[{
                "teacher": "teacher1",
                "student": "student1",
                "segment": "product"
            },
            {
                "teacher": "teacher1",
                "student": "student1",
                "segment": "UNR"
            },
            {
                "teacher": "teacher1",
                "student": "student1",
                "segment": "product"
            },
            {
                "teacher": "teacher2",
                "student": "student1",
                "segment": "UNR"
            },
            {
                "teacher": "teacher2",
                "student": "student2",
                "segment": "product"
            }
        ]

借助从Json数据创建复杂表的方法,我可以创建一个对每个老师及其人数进行计数的数组,我现在想在其中添加另一个详细信息。我想计算每个老师的细分实例,如下所示

[
    {
        "teacherName": "teacher1",
        "teacherCount": "3",
        "productCount":"2",
        "unrCount":"1"
    },
    {
        "teacherName": "teacher2",
        "teacherCount": "2",
        "productCount":"1",
        "unrCount":"1"
    }
]
埃迪

一种选择是reduce用于遍历数组。使用teacher为重点,以将数据汇总到一个对象。使用Object.values转换对象到一个数组。

const data = [{"teacher":"teacher1","student":"student1","segment":"product"},{"teacher":"teacher1","student":"student1","segment":"UNR"},{"teacher":"teacher1","student":"student1","segment":"product"},{"teacher":"teacher2","student":"student1","segment":"UNR"},{"teacher":"teacher2","student":"student2","segment":"product"}]

const result = Object.values(data.reduce((c, {teacher,segment}) => {
  c[teacher] = c[teacher] || {"teacherName": teacher,"teacherCount": 0,"productCount": 0,"unrCount": 0};
  c[teacher].teacherCount++;

  if (segment === "product") c[teacher].productCount++;
  if (segment === "UNR") c[teacher].unrCount++;

  return c;
}, {}));

console.log(result);

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章