js 以多字段为维度汇总某一字段值

发布时间 2023-05-30 10:09:38作者: 三叶草body

js 以多字段为维度汇总某一字段值

JavaScript可以以多个字段为维度进行汇总。你可以使用多个for循环或forEach循环,针对每个字段进行分组。然后使用reduce方法进行汇总。举个例子,假设你有一个数组数据如下:

let data = [{
    name: 'Alice',
    age: 25,
    city: 'New York',
    sales: 100
}, {
    name: 'Bob',
    age: 30,
    city: 'Los Angeles',
    sales: 200
}, {
    name: 'Alice',
    age: 25,
    city: 'New York',
    sales: 150
}];

你可以以nameagecity这三个字段为维度进行汇总,代码如下:

let summary = data.reduce((acc, cur) => {
    let key = `${cur.name}-${cur.age}-${cur.city}`;
    if (!acc[key]) {
        acc[key] = {
            name: cur.name,
            age: cur.age,
            city: cur.city,
            sales: 0
        };
    }
    acc[key].sales += cur.sales;
    return acc;
}, {});

let result = [];
for (let key in summary) {
    result.push(summary[key]);
}

console.log(result);

运行代码后,会输出按照nameagecity这三个字段汇总后的结果:

[ 
  { name: 'Alice', age: 25, city: 'New York', sales: 250 },
  { name: 'Bob', age: 30, city: 'Los Angeles', sales: 200 } 
]

通过以上代码,你可以了解到如何以多个字段为维度进行汇总。