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

190
Vistas
¿Cómo encontrar la diferencia simétrica usando JavaScript?

He estado trabajando en un algoritmo que encontrará la diferencia simétrica de dos matrices (es decir, solo elementos que están en 1 de las 2 matrices, pero no en ambas). He llegado a lo siguiente hasta ahora:

 function diffArray(arr1, arr2) { let newArr1 = arr1.slice(); let newArr2 = arr2.slice(); if (newArr1.length > newArr2.length) { return newArr1.filter((item) => !(item in newArr2)); } else { return newArr2.filter((item) => !(item in newArr1)); } }; const result = diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]); console.log(result);

Pero cuando se prueba con diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]) el resultado es [4, 5] en lugar de solo [4] . El problema parece ocurrir con cualquiera que sea el último valor de cualquiera de las matrices, pero parece que no puedo entender qué es lo que está causando el problema en mi código. Gracias de antemano por cualquier ayuda.

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

0

El operador in comprueba si el valor de la izquierda coincide con un nombre de propiedad de la derecha.

Si desea verificar si uno de los valores de propiedad está en una matriz, use el método includes .

 function diffArray(arr1, arr2) { let newArr1 = arr1.slice(); let newArr2 = arr2.slice(); if (newArr1.length > newArr2.length) { return newArr1.filter((item) => !newArr2.includes(item)); } else { return newArr2.filter((item) => !newArr1.includes(item)); } }; const result = diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]); console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Actualizar la respuesta para otra condición

const resultado = diffArray([1, 2, 3, 4], [1, 2, 3, 5]);

 function diffArray(arr1, arr2){ const diff1 = arr1.filter(item => !arr2.includes(item)); // if item not available, the value will be filtered const diff2 = arr2.filter(item => !arr1.includes(item));// if item not available, the value will be filtered return diff1.concat(diff2); } // const result = diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]); const result = diffArray([1, 2, 3, 4], [1, 2, 3, 5]); // This condition will fail on the above code console.log(result);

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