const contacts = [ {contact: "mobileno", value: "123456789", entered: "03-02-2021"}, {contact: "email", value: "test1@test.com", entered: "03-02-2021"}, {contact: "mobileno", value: "123456789"entered: "03-03-2021"}, {contact: "mobileno", value: "558843721"entered: "03-04-2021"}, {contact: "email", value: "test2@test.com", entered: "03-05-2021"}, {contact: "email", value: "test2@test.com", entered: "03-06-2021"}, ]Suponiendo una matriz de objetos como arriba. Me gustaría eliminar los duplicados y, si hay duplicados, eliminar el que tenga la fecha ingresada más antigua. La base para la singularidad debe ser el tipo y el valor del contacto.
Si el tipo de contacto, el valor del contacto y la fecha ingresada son iguales, conserve el que tiene el índice más bajo. El correcto procesamiento del anterior debe ser:
const contacts = [ {contact: "email", value: "test1@test.com", entered: "03-02-2021"}, {contact: "mobileno", value: "123456789"entered: "03-03-2021"}, {contact: "mobileno", value: "558843721"entered: "03-04-2021"}, {contact: "email", value: "test2@test.com", entered: "03-05-2021"}, ]¿Alguna sugerencia para hacer esto de la manera más eficiente? Gracias
El formato de fecha usado aquí por cierto es: mm/dd/yyyy
He intentado ver preguntas similares aquí, pero ninguna de ellas tiene la condición de usar un campo de última fecha ingresada.
Prueba lodash.uniqCon
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; console.log(_.uniqWith(objects, _.isEqual)); // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>