He estado atrapado tratando de implementar esto para siempre. ¿Crees que podrías ayudarme a fusionar dos objetos de matriz basados en la clave PartitionKey y si PartitionKey no coincide, aún así agregarlo a la matriz de todos modos?
let arr1 =[ { PartitionKey: '047', AttributionCount: 61 }, { PartitionKey: '043', AttributionCount: 136 }, { PartitionKey: '053', AttributionCount: 36 } ]; let arr2 = [ { PartitionKey: '043', ReportCount: 5 }, { PartitionKey: '047', ReportCount: 2 }, { PartitionKey: '045', ReportCount: 2 }, { PartitionKey: '041', ReportCount: 3 } ] let arr3 = arr1.map((item, i) => Object.assign({}, item, arr2[i])); console.log(arr3);Me gustaría devolver el resultado de
[ { PartitionKey: '047', ReportCount: 2, AttributionCount: 61 }, { PartitionKey: '043', ReportCount: 5, AttributionCount: 136 }, { PartitionKey: '053', ReportCount: 0, AttributionCount: 36 }, { PartitionKey: '045', ReportCount: 2, AttributionCount: 0}, { PartitionKey: '041', ReportCount: 3, AttributionCount: 0} ]Puedes hacerlo así:
let arr1 =[ { PartitionKey: '047', AttributionCount: 61 }, { PartitionKey: '043', AttributionCount: 136 }, { PartitionKey: '053', AttributionCount: 36 } ]; let arr2 = [ { PartitionKey: '043', ReportCount: 5 }, { PartitionKey: '047', ReportCount: 2 }, { PartitionKey: '045', ReportCount: 2 }, { PartitionKey: '041', ReportCount: 3 } ] let arr3 = arr2.map((item, i) => { const itemArray1 = arr1.find(x => x.PartitionKey == item.PartitionKey) || {AttributionCount: 0} return {...item, ...itemArray1} }); console.log('arr3', arr3);Intente usar el método object.assign() para este problema.
por ejemplo: const returnedTarget = Object.assign(target, source);
referencia: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
mi manera...
let arr1 = [ { PartitionKey: '047', AttributionCount: 61 } , { PartitionKey: '043', AttributionCount: 136 } , { PartitionKey: '053', AttributionCount: 36 } ] let arr2 = [ { PartitionKey: '043', ReportCount: 5 } , { PartitionKey: '047', ReportCount: 2 } , { PartitionKey: '045', ReportCount: 2 } , { PartitionKey: '041', ReportCount: 3 } ] const result = Object.entries( arr1 .concat(arr2) .reduce((res,{PartitionKey,...info}) => { if (!res[PartitionKey]) res[PartitionKey] = info else Object.assign(res[PartitionKey], info ) return res } ,{}) ).map( ([k,v]) => ({PartitionKey:k, AttributionCount:0, ReportCount:0, ...v})) console.log( result ) .as-console-wrapper {max-height: 100%!important;top:0 }