根据不同种类进行归类

最近在项目中用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]);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值