我有一个看起来像这样的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] 删除。
我来说两句