Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
Eliminar objetos duplicados según una de sus claves

Tengo una matriz que solo tiene objetos y me gustaría eliminar los objetos duplicados en función de uno de sus valores clave, que es val.js.url pero quiero que el objeto restante sea el último entre los objetos duplicados, así que básicamente usé reverse() en mi código`.

Mi matriz:

 [ { "id": "js_1oc3uiteki22", "tab": { "title": "title 1", "url": "http://google.com" }, "js": { "initiator": "https://google.com", "url": "http://url.com" } }, { "id": "js_1oc3uiteki22", "tab": { "title": "title 2", "url": "http://google2.com" }, "js": { "initiator": "https://google2.com", "url": "http://url.com" } } ]

Resultado Esperado:

 [ { "id": "js_1oc3uiteki22", "tab": { "title": "title 2", "url": "http://google2.com" }, "js": { "initiator": "https://google2.com", "url": "http://url.com" } } ]

En realidad, tengo el siguiente código que resuelve este problema, pero cuando necesito usar ese código 2 veces en el mismo archivo js, supongo que es un poco conflictivo y no limpia bien los duplicados en la segunda matriz.

 function dupfix(arr) { return arr.reverse().filter(val => { if (!this.hasOwnProperty(val.js.url)) { return this[val.js.url] = true } return false }, {}).reverse() } file = dupfix(file)

Entonces, ¿cómo puedo arreglar ese código anterior o hay otros métodos mejores para hacerlo? Gracias.

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Encontré esa realmente rápida entre otras alternativas, https://stackoverflow.com/a/61027136

 function removeDuplicates(array, key) { let lookup = {}; array.forEach(element => { lookup[element[key]] = element }); return Object.keys(lookup).map(key => lookup[key]); }; removeDuplicates(array,'objectKey');
about 4 years ago · Santiago Trujillo Denunciar

0

Puede usar así para filtrar los duplicados.

 const myArr=[ { "id": "js_1oc3uiteki22", "tab": { "title": "title 1", "url": "http://google.com" }, "js": { "initiator": "https://google.com", "url": "http://url.com" } }, { "id": "js_1oc3uiteki22", "tab": { "title": "title 2", "url": "http://google2.com" }, "js": { "initiator": "https://google2.com", "url": "http://url2.com" } }, { "id": "js_1oc3uiteki23", "tab": { "title": "title 3", "url": "http://google3.com" }, "js": { "initiator": "https://google3.com", "url": "http://url3.com" } }, { "id": "js_1oc3uiteki23", "tab": { "title": "title 4", "url": "http://google4.com" }, "js": { "initiator": "https://google4.com", "url": "http://url4.com" } } ] function removeDuplicates(arr) { let uniqueIds = []; var result = arr.slice().reverse().filter(item => { var isDuplicate = uniqueIds.includes(item.id); if (!isDuplicate) { uniqueIds.push(item.id); return item; } }); return result; } console.log(removeDuplicates(myArr));

about 4 years ago · Santiago Trujillo Denunciar

0

Puede usar la agrupación hash para identificar objetos de forma única:

 const val = [{"id":"js_1oc3uiteki22","tab":{"title":"title 1","url":"http://google.com"},"js":{"initiator":"https://google.com","url":"http://url.com"}},{"id":"js_1oc3uiteki22","tab":{"title":"title 2","url":"http://google2.com"},"js":{"initiator":"https://google2.com","url":"http://url.com"}}]; const uniqs = val.reduce((r, item) => (r[item.js.url] = item, r), {}); const result = Object.values(uniqs); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0 }

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda