Tengo un requisito donde tengo datos similares a este:
[ { "header": { "httpFittingRequestAttempts": 1 }, "payload": { "positionCode": "A10007", "active": "A", "classCode": "EX003", "publishedTime": "2022-02-13 18:04:34.356251+00" } }, { "header": { "httpFittingRequestAttempts": 1 }, "payload": { "positionCode": "E10003", "active": "A", "classCode": "EX002", "publishedTime": "2022-02-21 03:34:10.139843+00" } }, { "header": { "httpFittingRequestAttempts": 1 }, "payload": { "positionCode": "A10007", "active": "A", "classCode": "EX003", "publishedTime": "2022-02-23 12:43:00.08635+00" } }, { "header": { "httpFittingRequestAttempts": 1 }, "payload": { "positionCode": "A10007", "active": "T", "classCode": "EX004", "publishedTime": "2022-02-24 12:00:00.08635+00" } } ] Necesito eliminar los duplicados para cada positionCode . Por ejemplo, si hay varios objetos con el mismo código de positionCode , necesito retener solo el último en la matriz y eliminar todos los demás duplicados de la matriz y recuperar la matriz en el mismo formato con los duplicados eliminados.
Sugiera una forma de hacer esto en Javascript.
Pensé en agrupar los objetos usando el código de positionCode y luego verificar cuál es el último. No estoy seguro de cómo proceder y agradecería ayuda en esto.
Puede lograr esto filtrando los códigos de posición en función de un solo elemento y comparar su tiempo publicado si el elemento actual publicado es mayor que el elemento que ya está en nuestra matriz (arr) o el elemento que es único para ellos. Luego empujará a una matriz temporal, de lo contrario no.
let arr =[ { "header": { "httpFittingRequestAttempts": 1 }, "payload": { "positionCode": "A10007", "active": "A", "classCode": "EX003", "publishedTime": "2022-02-13 18:04:34.356251+00" } }, { "header": { "httpFittingRequestAttempts": 1 }, "payload": { "positionCode": "E10003", "active": "A", "classCode": "EX002", "publishedTime": "2022-02-21 03:34:10.139843+00" } }, { "header": { "httpFittingRequestAttempts": 1 }, "payload": { "positionCode": "A10007", "active": "A", "classCode": "EX003", "publishedTime": "2022-02-23 12:43:00.08635+00" } }, { "header": { "httpFittingRequestAttempts": 1 }, "payload": { "positionCode": "A10007", "active": "T", "classCode": "EX004", "publishedTime": "2022-02-24 12:00:00.08635+00" } } ] let a=[] arr.forEach((item,index)=>{ let i=arr.filter(e=>e.payload.positionCode===item.payload.positionCode && new Date(e.payload.publishedTime)>new Date(item.payload.publishedTime)); if(!i.length) a.push(item); }); console.log(a) // here is your final result array