最近在项目中用nodejs写了一个合同模板的功能,实现了可配置化,让不同公司适用不同的合同模板。
想到之前做了一个月度统计报表,对相同月份的数据进行统计,举个例子如下
有一个数组,每条数据记录了各自同学的名字,所属公司,所拥有的现金,所在的月份
const staffs = [
{ staff: '小黄', company: '深圳公司', cash: 300, month: '3月' },
{ staff: '小红', company: '深圳公司', cash: 400, month: '3月' },
{ staff: '小英', company: '深圳公司', cash: 500, month: '3月' },
{ staff: '小铭', company: '深圳公司', cash: 700, month: '3月' },
{ staff: '小杨', company: '深圳公司', cash: 700, month: '4月' },
{ staff: '小江', company: '广圳公司', cash: 700, month: '5月' },
{ staff: '小陈', company: '广圳公司', cash: 600, month: '5月' }
];
需求A,将相同公司的同学进行汇总
const objCompanys = {};
const companys = [];
for (const item of staffs) {
if (!objCompanys[item['company']]) {
objCompanys[item['company']] = {};
objCompanys[item['company']].company = item.company;
objCompanys[item['company']].staffs = [];
} else {
objCompanys[item['company']].staffs.push(item.staff);
}
}
for (const key in objCompanys) {
if (objCompanys.hasOwnProperty(key)) {
companys.push(objCompanys[key]);
}
}
需求B,将相同月份的现金进行汇总
const objMonths = {};
const months = [];
for (const item of staffs) {
if (!objMonths[item['month']]) {
objMonths[item['month']] = {};
objMonths[item['month']].month = item.month;
objMonths[item['month']].cash = 0;
} else {
objMonths[item['month']].cash += item.cash;
}
}
for (const key in objMonths) {
if (objMonths.hasOwnProperty(key)) {
months.push(objMonths[key]);
}
}