Estoy trabajando en un proyecto en el que necesito eliminar valores duplicados del objeto de matriz JSON con alguna especificación en reaccionar JS. Intenté eliminar usando _.uniqBy pero en la salida tomó el primer valor del valor duplicado que no quiero.
Suponga que tiene una matriz JSON como:
[ { id: 1, name: 'bob' }, { id: 2, name: 'bill' }, { id: 1, name: 'alice' } ]
usando _.uniqBy obtuve [ { id: 1, name: 'bob' }, { id: 2, name: 'bill' }]
esta salida.
pero quiero [ { id: 2, name: 'bill' }, { id: 1, name: 'alice' } ]
esta salida.
Como puede ver, quiero una salida cuyo nombre sea alice not bob junto con id:1
.
¿Alguien puede ayudarme? Gracias.
Mi primer pensamiento es usar una reducción y empujar los elementos en un mapa, luego obtener los valores:
Object.values(items.reduce((map, item) => ({ ...map, [item.id]: item }), {}))
Sin embargo, esto probablemente no sea muy eficiente si se trata de grandes conjuntos de problemas de rendimiento.
Es una frase rápida y sucia. Si desea algo más eficiente, echaría un vistazo al código fuente de lodash y lo modificaría según sus necesidades o escribiría algo similar:
https://github.com/lodash/lodash/blob/2f79053d7bc7c9c9561a30dda202b3dcd2b72b90/.internal/baseUniq.js