根據某些值為一組重新組裝陣列
阿新 • • 發佈:2021-07-20
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);