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

471
Vistas
Javascript: eliminar duplicados en matriz 2D

Tengo una matriz 2D como esta en JavaScript:

 result=[["user1", "java"], ["user2", "python"],["user1", "java"], ["user1", "C++"], ["user1", "java"], ["user2", "Python"]....]

puede ver que ["user1", "java"] aparece 3 veces y ["user2", "python"] 2 veces.

Quiero limpiar esta matriz para que cada par de elementos aparezcan solo una vez. Significa que si "usuario1" puede aparecer nuevamente, debería ser con otro idioma pero no con "java". ¿alguien me puede ayudar?

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

0

Podrías probar con este:

 let result= [ ["user1", "java"], ["user2", "python"], ["user1", "java"], ["user1", "C++"], ["user1", "java"], ["user2", "Python"] ]; const map = new Object(); result.forEach((item) => { if(!map[item[0]]){ map[item[0]] = new Array(); } const user = map[item[0]]; const language = (item[1] || '').toLowerCase().trim(); if(user.indexOf(language) < 0){ user.push(language); } }); result = new Array(); Object.keys(map).forEach((user) => { map[user].forEach((language) => { result.push([user,language]); }); }); console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede crear un Set a partir de la matriz uniendo las cadenas de usuario y de idioma, lo que eliminaría los duplicados. Y luego simplemente divida las cadenas para obtener la matriz deseada.

 const result = [["user1", "java"], ["user2", "python"], ["user1", "java"], ["user1", "c++"], ["user1", "java"], ["user2", "python"]], uniques = Array.from(new Set(result.map((res) => res.join("-")))).map( (data) => data.split("-") ); console.log(uniques);

Documentaciones relevantes:

  • Array.from
  • Establecer
  • matriz.prototipo.mapa
  • Array.prototype.join
  • String.prototype.split
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede hacer esto con un solo bucle sobre la matriz usando reduce , join y Set as:

 const result = [ ['user1', 'java'], ['user2', 'python'], ['user1', 'java'], ['user1', 'C++'], ['user1', 'java'], ['user2', 'python'], ]; const [uniqueElements] = result.reduce((acc, curr) => { const [uniq, set] = acc; if (!set.has(curr.join(','))) { set.add(curr.join(',')); uniq.push(curr); } return acc; }, [[], new Set()], ); console.log(uniqueElements);
 /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }

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