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
comparar dos arreglos para crear un nuevo arreglo

Esto parece un problema muy sencillo, pero por mi vida, no puedo solucionarlo.

Quiero comparar dos matrices y si el valor de la matriz2 está en la matriz1, empújelo a una nueva matriz; de lo contrario, presione un 0.

estas son mis matrices:

 let arrayOne = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]; let arrayTwo = [3, 4, 5, 8, 9, 10, 12, 13, 14, 15, 16];

resultado deseado es

 [0,0,3,4,5,0,0,8,9,10,11,12,13,14,15,16,0,0]

intento actual con problemas de índices obvios

 let newArray = []; for (let i=0; i < arrayOne.length; i++){ if(arrayTwo.includes(i)) newArray.push(arrayTwo[i]); else newArray.push(0); };

resultado actual

 [0, 0, 0, 8, 9, 10, 0, 0, 13, 14, 15, 16, undefined, undefined, undefined, undefined, undefined, 0]
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema con su enfoque es que está buscando un índice en arrayTwo

 if(arrayTwo.includes(i)) newArray.push(arrayTwo[i]);

donde i es el índice no un valor. Es por eso que está obteniendo valores undefined , porque arrayTwo tiene menos valores que arrayOne, por lo que el índice de arrayOne no existirá en arrayTwo.

En su lugar, debe buscar el valor en arrayTwo

 for (let i=0; i < arrayOne.length; i++){ let value = arrayOne[i]; if(arrayTwo.includes(value)) newArray.push(value); else newArray.push(0); };

Si comprobáis solamente la existencia del valor en la colección, usad Set que ha diseñado exactamente para esto.

 let arrayOne = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]; let values = new Set([3, 4, 5, 8, 9, 10, 12, 13, 14, 15, 16]); const result = arrayOne.map(value => values.has(value) ? value : 0); // => [0,0,3,4,5,0,0,8,9,10,11,12,13,14,15,16,0,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