1. 程式人生 > 其它 >根據某些值為一組重新組裝陣列

根據某些值為一組重新組裝陣列

 let arr = [
            {
                fenl: '1',
                bumen: '5',
                bianm: 'B003020201000005',
                name: '菠菜',
                pinp: '首農',
                guig: '200g',
                baoz: '袋',
                danjia: '12',
                num: '100',
                xiaoj: 
'1300', money: '12000', remark: '備註備註', people: '張三', supplier: 'DB', createTime: '2020-12-01 11:11:11', danhao: 'SYCGQ202012010001', shuilv: '1' }, { fenl: '1', bumen:
'5', bianm: 'B003020201000005', name: '菠菜', pinp: '首農', guig: '200g', baoz: '袋', danjia: '12', num: '100', xiaoj: '1200', money: '12000', remark: '備註備註', people:
'張三', supplier: 'DB', createTime: '2020-12-01 11:11:11', danhao: 'SYCGQ202012010001', shuilv: '1' }, { fenl: '1', bumen: '5', bianm: 'XNB003020201000005', name: '菠菜', pinp: '首農', guig: '200g', baoz: '袋', danjia: '12', num: '100', xiaoj: '1200', money: '12000', remark: '備註備註', people: '張三', supplier: 'DB', createTime: '2020-12-01 11:11:11', danhao: 'SYCGQ202012010001', shuilv: '1' }, { fenl: '2', bumen: '5', bianm: 'B003020201000005', name: '菠菜', pinp: '首農', guig: '200g', baoz: '袋', danjia: '12', num: '100', xiaoj: '1200', money: '12000', remark: '備註備註', people: '張三', supplier: 'DB', createTime: '2020-12-01 11:11:11', danhao: 'SYCGQ202012010001', shuilv: '1' }, { fenl: '1', bumen: '6', bianm: 'B003020201000005', name: '菠菜', pinp: '首農', guig: '200g', baoz: '袋', danjia: '12', num: '100', xiaoj: '1200', money: '12000', remark: '備註備註', people: '張三', supplier: 'B', createTime: '2020-12-01 11:11:11', danhao: 'SYCGQ202012010001', shuilv: '1' }, { fenl: '2', bumen: '5', bianm: 'B003020201000005', name: '菠菜', pinp: '首農', guig: '200g', baoz: '袋', danjia: '12', num: '100', xiaoj: '1200', money: '12000', remark: '備註備註', people: 'lisi', supplier: 'DB', createTime: '2020-12-01 11:11:11', danhao: 'SYCGQ202012010001', shuilv: '1' } ]; var map = {}, dest = []; for (var i = 0; i < arr.length; i++) { var ai = arr[i]; // 分類,部門,供應商一樣為一組 if (!map[ai.fenl + ai.bumen + ai.supplier]) { dest.push({ fenl: ai.fenl, bumen: ai.bumen, supplier: ai.supplier, data: [ai] }); map[ai.fenl + ai.bumen + ai.supplier] = ai; } else { for (var j = 0; j < dest.length; j++) { var dj = dest[j]; if (dj.fenl == ai.fenl && dj.bumen == ai.bumen && dj.supplier == ai.supplier) { dj.data.push(ai); break; } } } } console.log(map); console.log(dest); let tableArr = []; dest.forEach(item => { let total = 0; item.data.forEach(val => { total += val.xiaoj * 1; }); tableArr.push({ fenl: item.fenl, bumen: item.bumen, supplier: item.supplier, total: total, hetong: '', lxr: '', lxfs: '', shdi: '', beizhu: '' }); }); // 最終展示的關聯合同彈出框 console.log(tableArr);