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

82
Vistas
Encuentre duplicados y busque elementos duplicados dentro del objeto en JavaScript

Tengo una matriz que contiene algunos objetos. Quiero encontrar nombres duplicados en la matriz. Después de encontrar los nombres duplicados de cada nombre duplicado, también debo verificar su antigüedad. Además de tener el mismo nombre, si la edad no es la misma pero los nombres son los mismos, guárdalo y dame error solo si el nombre es el mismo y la misma edad. Mi matriz tiene nombres duplicados que no tienen la misma edad Ahora el programa que escribí da un error y no debería dar un error porque los nombres son los mismos pero su edad no es la misma y debe guardarse y no hacerlo correctamente Después de buscar en la matriz , Encontré un nombre duplicado. Dos nombres de Liam duplicados tienen la misma edad. Da error en la consola, pero si la edad no es igual, no te equivoques y será Gracias por ayudarme a responder

 const data = [ {id: 1,name: "Liam",age: 20}, {id: 2,name: "Liam",age: 18}, {id: 3,name: "Noah",age: 20}, {id: 4,name: "Noah",age: 18}, {id: 5,name: "Elijah",age: 18} ] function checked() { const toFindDuplicates = arry => arry.filter((item, index) => arry.indexOf(item) !== index); const getName = data.map(item => item.name) const duplicateName = toFindDuplicates(getName) console.log(duplicateName); if (duplicateName.length > 0) { const newArray = [] const filters = data.filter(x => duplicateName.includes(x.name)) filters.forEach(item => newArray.push(item.age)) console.log(filters); const duplicateAge = toFindDuplicates(newArray) if (!!duplicateName.length) { console.log("error"); } else { return console.log("save");; } } else { return console.log("save");; } } checked()

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Si entendí tu pregunta correctamente, simplemente quieres detectar si tus datos tienen el mismo par age name . Puedes comprobarlo así:

 const data1 = [ {id: 1,name: "Liam",age: 20}, {id: 2,name: "Liam",age: 18}, {id: 3,name: "Noah",age: 20}, {id: 4,name: "Noah",age: 18}, {id: 5,name: "Elijah",age: 18} ] const data2 = [ {id: 1,name: "Liam",age: 20}, {id: 2,name: "Liam",age: 18}, {id: 3,name: "Noah",age: 20}, {id: 4,name: "Noah",age: 18}, {id: 5,name: "Elijah",age: 18}, {id: 6,name: "Liam",age: 18}, ] const duplicateExists = arr => { let error = false, obj = {} arr.forEach(el => { if(!error){ const {name,age} = el if(obj[name]) { error = obj[name] === age } obj[name] = age } } ,{}) return error } console.log(duplicateExists(data1)) console.log(duplicateExists(data2))

about 4 years ago · Juan Pablo Isaza Denunciar

0

Para una solución de paso único O(N) , podría considerar utilizar un Mapa que use el nombre como clave y un Conjunto de edades vistas anteriormente correspondientes al nombre como valor, ya que la búsqueda en un Conjunto es O(1) :

 const data = [ {id: 1, name: "Liam", age: 20}, {id: 2, name: "Liam", age: 18}, {id: 3, name: "Noah", age: 20}, {id: 4, name: "Noah", age: 18}, {id: 5, name: "Elijah", age: 18}, ]; const hasDuplicates = arr => { const nameToAges = new Map(); for (const {_, name, age} of arr) { if (nameToAges.has(name)) { if (nameToAges.get(name).has(age)) { return true; } nameToAges.get(name).add(age); } else { nameToAges.set(name, new Set([age])); } } return false; } console.log("Two elements exist with same name and age:"); console.log(hasDuplicates(data));

Pruébelo aquí .

about 4 years ago · Juan Pablo Isaza Denunciar

0

[ Editar : Eliminada la solución compleja]

Si solo desea verificar si hay algún duplicado en la matriz, usar un Set simplifica mucho las cosas. Aquí hay una función más genérica para buscar duplicados en cualquier (combinación de) clave(s) en una matriz de Objetos.

 const [data, data2] = getExampleData(); console.log(`hasDuplicatesForKeys(data, 'name', 'age'): ${ hasDuplicatesForKeys(data, 'name', 'age') }`); console.log(`hasDuplicatesForKeys(data2, 'name', 'age'): ${ hasDuplicatesForKeys(data2, 'name', 'age') }`); // name and id console.log(`hasDuplicatesForKeys(data2, 'name', 'id'): ${ hasDuplicatesForKeys(data2, 'name', 'id') }`); // single key console.log(`hasDuplicatesForKeys(data2, 'name'): ${ hasDuplicatesForKeys(data2, 'name') }`); console.log(`hasDuplicatesForKeys(data, 'id'): ${ hasDuplicatesForKeys(data, 'id') }`); /** * Generic function to check for duplicate Object * on certain keys within an array of objects * @param data {Array} The array * @param keys {string[]} The keys to filter on * @returns {boolean} */ function hasDuplicatesForKeys(data, ...keys) { let check = new Set(); data.forEach( d => check.add( keys.map( k => d[k] ).join(``) ) ); return [...check].length < data.length; } // keep data out of sight function getExampleData() { return [ [ {id: 1, name: "Liam", age: 20}, {id: 2, name: "Liam", age: 18}, {id: 3, name: "Noah", age: 20}, {id: 3, name: "Noah", age: 20}, {id: 4, name: "Noah", age: 18}, {id: 5, name: "Elijah", age: 18}, {id: 12, name: "Elijah", age: 18} ], [ {id: 1, name: "Liam", age: 20}, {id: 2, name: "Liam", age: 18}, {id: 3, name: "Noah", age: 20}, {id: 4, name: "Noah", age: 18}, {id: 5, name: "Elijah", age: 18} ], ]; }

about 4 years ago · Juan Pablo Isaza 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