tengo una salida como esta:
[ { GolonganName: '3B - Niaga Besar', data: [ 172000 ] }, { GolonganName: '3A - Niaga Kecil', data: [ 76700 ] }, { GolonganName: '2B - Rumah Tangga Menengah', data: [ 57000 ] }, { GolonganName: 'IA - Rumah Tangga', data: [ 272000 ] }, { GolonganName: 'R5 - Instansi Pemerintah', data: [ 429300 ] }, { GolonganName: '3B - Niaga Besar', data: [ 0 ] }, { GolonganName: '3A - Niaga Kecil', data: [ 0 ] }, { GolonganName: '2B - Rumah Tangga Menengah', data: [ 50200 ] }, { GolonganName: 'IA - Rumah Tangga', data: [ 0 ] }, { GolonganName: 'R5 - Instansi Pemerintah', data: [ 1467000 ] } ]pero quiero enviar mis datos con el mismo nombre de Golongan en 1 datos solo así:
[ { GolonganName: '3B - Niaga Besar', data: [ 172000, 0 ] }, { GolonganName: '3A - Niaga Kecil', data: [ 76700, 0 ] }, { GolonganName: '2B - Rumah Tangga Menengah', data: [ 57000, 50200 ] }, { GolonganName: 'IA - Rumah Tangga', data: [ 272000, 0 ] }, { GolonganName: 'R5 - Instansi Pemerintah', data: [ 429300, 1467000 ] }, ]He intentado usar array.map pero no funciona correctamente.
let dataMap: any = seriesGolongan.map((item: any, i: any) => { const length = responseBillingTarget.length; let lenGol = responseGetGolongan.length; for (let index = 0; index < responseGetGolongan.length; index++) { const element = responseGetGolongan[index]; if (element.name == item.GolonganName) { if (length == 2) { resultGol.push({ GolonganName: item.GolonganName, data: [parseInt(item.data)], }); } } } });¿Cómo resolverlo? ¿Pueden ayudarme por favor?
Puede utilizar la agrupación por enfoque hash:
const inputData = [{GolonganName:'3B - Niaga Besar',data:[172000]},{GolonganName:'3A - Niaga Kecil',data:[76700]},{GolonganName:'2B - Rumah Tangga Menengah',data:[57000]},{GolonganName:'IA - Rumah Tangga',data:[272000]},{GolonganName:'R5 - Instansi Pemerintah',data:[429300]},{GolonganName:'3B - Niaga Besar',data:[0]},{GolonganName:'3A - Niaga Kecil',data:[0]},{GolonganName:'2B - Rumah Tangga Menengah',data:[50200]},{GolonganName:'IA - Rumah Tangga',data:[0]},{GolonganName:'R5 - Instansi Pemerintah',data:[1467000]}]; const groups = inputData.reduce((acc, { GolonganName, data }) => { acc[GolonganName] ??= { GolonganName, data: [] }; acc[GolonganName].data.push(...data); return acc; }, {}); const result = Object.values(groups); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0 }