如何在 foreach javascript 中对数据进行分组和求和
how to group and sum data in foreach javascript
我有一个数组对象形式的数据。我将数据分组并根据日期和代码求和
const data = [
{code: 8, date:"2022-03-24", total:4},
{code: 8, date:"2022-03-24", total:8},
{code: 8, date:"2022-03-25", total:2},
{code: 9, date:"2022-03-24", total:4},
{code: 9, date:"2022-03-25", total:2},
{code: 9, date:"2022-03-25", total:1},]
结果在意料之中
const result = [
{code: 8, date:"2022-03-24", total:12},
{code: 8, date:"2022-03-25", total:2},
{code: 9, date:"2022-03-24", total:4},
{code: 9, date:"2022-03-25", total:3},]
您通常可以使用 reduce
来解决这些分组问题。我正在使用 code
和 date
的组合进行分组。像 "8|2022-03-24"
.
这就是中间对象的样子
{
8|2022-03-24: {
code: 8,
date: "2022-03-24",
total: 12
},
8|2022-03-25: {
code: 8,
date: "2022-03-25",
total: 2
},
9|2022-03-24: {
code: 9,
date: "2022-03-24",
total: 4
},
9|2022-03-25: {
code: 9,
date: "2022-03-25",
total: 3
}
}
我正在使用 Object.values
从该对象获取值
const data = [
{code: 8, date:"2022-03-24", total:4},
{code: 8, date:"2022-03-24", total:8},
{code: 8, date:"2022-03-25", total:2},
{code: 9, date:"2022-03-24", total:4},
{code: 9, date:"2022-03-25", total:2},
{code: 9, date:"2022-03-25", total:1},]
let grouped = Object.values(data.reduce((acc,{code,date,total})=>{
acc[code+'|'+date] = acc[code+'|'+date] || {code,date,total:0}
acc[code+'|'+date].total+=total
return acc;
},{}))
console.log(grouped)
我有一个数组对象形式的数据。我将数据分组并根据日期和代码求和
const data = [
{code: 8, date:"2022-03-24", total:4},
{code: 8, date:"2022-03-24", total:8},
{code: 8, date:"2022-03-25", total:2},
{code: 9, date:"2022-03-24", total:4},
{code: 9, date:"2022-03-25", total:2},
{code: 9, date:"2022-03-25", total:1},]
结果在意料之中
const result = [
{code: 8, date:"2022-03-24", total:12},
{code: 8, date:"2022-03-25", total:2},
{code: 9, date:"2022-03-24", total:4},
{code: 9, date:"2022-03-25", total:3},]
您通常可以使用 reduce
来解决这些分组问题。我正在使用 code
和 date
的组合进行分组。像 "8|2022-03-24"
.
这就是中间对象的样子
{
8|2022-03-24: {
code: 8,
date: "2022-03-24",
total: 12
},
8|2022-03-25: {
code: 8,
date: "2022-03-25",
total: 2
},
9|2022-03-24: {
code: 9,
date: "2022-03-24",
total: 4
},
9|2022-03-25: {
code: 9,
date: "2022-03-25",
total: 3
}
}
我正在使用 Object.values
const data = [
{code: 8, date:"2022-03-24", total:4},
{code: 8, date:"2022-03-24", total:8},
{code: 8, date:"2022-03-25", total:2},
{code: 9, date:"2022-03-24", total:4},
{code: 9, date:"2022-03-25", total:2},
{code: 9, date:"2022-03-25", total:1},]
let grouped = Object.values(data.reduce((acc,{code,date,total})=>{
acc[code+'|'+date] = acc[code+'|'+date] || {code,date,total:0}
acc[code+'|'+date].total+=total
return acc;
},{}))
console.log(grouped)