Lodash elimina duplicados de la matriz
Estos son mis datos:
[
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello-how-are-you',
id: "23"
},
{
url: 'www.example.com/i-like-cats',
id: "24"
},
{
url: 'www.example.com/i-like-pie',
id: "25"
}
]
Con Lodash, ¿cómo podría eliminar objetos con claves de identificación duplicadas? Algo con filtro, mapa y único, pero no del todo seguro.
Mi conjunto de datos real es mucho más grande y tiene más claves, pero el concepto debería ser el mismo.
_.unique
ya no funciona para la versión actual de Lodash ya que la versión 4.0.0 tiene este cambio importante . La funcionalidad de _.unique
se dividió en _.uniq
, _.sortedUniq
, _.sortedUniqBy
y _.uniqBy
.
Podrías usar _.uniqBy
así:
_.uniqBy(data, function (e) {
return e.id;
});
...o así:
_.uniqBy(data, 'id');
Documentación: https://lodash.com/docs#uniqBy
Para versiones anteriores de Lodash (<4.0.0):
Suponiendo que los datos deben ser únicos según id
la propiedad de cada objeto y que sus datos se almacenan en data
una variable, puede usar la _.unique()
función como esta:
_.unique(data, function (e) {
return e.id;
});
O simplemente así:
_.uniq(data, 'id');
Podrías usar el método lodash _.uniqWith, está disponible en la versión actual de lodash 4.17.2.
Ejemplo:
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.uniqWith(objects, _.isEqual);
// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
Más información: https://lodash.com/docs/#uniqWith
Con lodash versión 4+, eliminarías objetos duplicados ya sea por propiedad específica o por todo el objeto, así:
var users = [
{id:1,name:'ted'},
{id:1,name:'ted'},
{id:1,name:'bob'},
{id:3,name:'sara'}
];
var uniqueUsersByID = _.uniqBy(users,'id'); //removed if had duplicate id
var uniqueUsers = _.uniqWith(users, _.isEqual);//removed complete duplicates
Fuente: https://www.codegrepper.com/?search_term=Lodash+remove+duplicates+from+array
O simplemente use union , para una matriz simple.
_.union([1,2,3,3], [3,5])
// [1,2,3,5]