• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

118
Vistas
Eliminación de duplicados de 2 arreglos

Tengo 2 matrices que estoy tratando de comparar y obtener los valores únicos de:

 arr1 = [ 'Material', 'Style', 'Size', 'add another item', 'THIS IS A TEST OPTION', 'Title', 'Color', 'dfgdfs', 'teststststst', 'THIS IS A NEW OPTION' ] arr2 = [ { option: 'Title', product: [ [Object] ] }, { option: 'Style', product: [ [Object] ] }, { option: 'Material', product: [ [Object] ] }, { option: 'Size', product: [ [Object], [Object] ] }, { option: 'Color', product: [ [Object], [Object] ] }, { option: 'THIS IS A NEW OPTION', product: [ [Object] ] }, { option: 'THIS IS A TEST OPTION', product: [ [Object] ] }, { option: 'add another item', product: [ [Object] ] } ]

Rendimiento esperado:

 ['dfgdfs','teststststst']

No tengo ningún problema en extraer valores únicos cuando las matrices tienen 1 nivel de profundidad. Sin embargo, tengo problemas con arr2 como una matriz de objetos.

He intentado:

 arr1 = arr1.filter(val => !arr2.includes(val));

Lo que obviamente no funciona porque arr2 es una matriz de objetos.

También he intentado:

 arr1.filter((val, index) => { if (arr2[index]) { !arr2[index].option.includes(val); } });

Tanto como:

 arr1.filter((val, index) => { allUniqueOptions.forEach((option) => { !option.option.includes(val); }); });

Esto parece que debería ser tan simple, pero he estado devanándome la cabeza durante horas. ¿Alguna idea de lo que estoy haciendo mal?

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

0

Sus funciones de filtro deben devolver verdadero si se va a incluir el elemento y falso si no. Tenga en cuenta que sus dos últimos ejemplos no devuelven nada.

La lógica que utilicé en la función de filtro es: ¿aparece el elemento actual como una propiedad de "opción" en arr2? si sí devuelve falso, si no devuelve verdadero.

 arr1 = [ 'Material', 'Style', 'Size', 'add another item', 'THIS IS A TEST OPTION', 'Title', 'Color', 'dfgdfs', 'teststststst', 'THIS IS A NEW OPTION' ] arr2 = [ { option: 'Title', product: {}}, { option: 'Style', product: {} }, { option: 'Material', product: {} }, { option: 'Size', product: {} }, { option: 'Color', product: {} }, { option: 'THIS IS A NEW OPTION', product: {} }, { option: 'THIS IS A TEST OPTION', product: {} }, { option: 'add another item', product: {} } ] const uniques = arr1.filter(item => !arr2.find(el => el.option === item)); console.log(uniques);

about 3 years ago · Juan Pablo Isaza Denunciar

0

Necesita filter el arr1 y verificar con some método en cada elemento de la matriz si no existen iguales en las opciones de arr2.

 const arr1 = [ 'Material', 'Style', 'Size', 'add another item', 'THIS IS A TEST OPTION', 'Title', 'Color', 'dfgdfs', 'teststststst', 'THIS IS A NEW OPTION' ] const arr2 = [ { option: 'Title', product: [ [ {} ] ] }, { option: 'Style', product: [ [ {} ] ] }, { option: 'Material', product: [ [ {} ] ] }, { option: 'Size', product: [ [ {} ], [ {} ] ] }, { option: 'Color', product: [ [ {} ], [ {} ] ] }, { option: 'THIS IS A NEW OPTION', product: [ [ {} ] ] }, { option: 'THIS IS A TEST OPTION', product: [ [ {} ] ] }, { option: 'add another item', product: [ [ {} ] ] } ] const result = arr1.filter(i => !arr2.some(o => i === o.option)) console.log(result)

about 3 years ago · Juan Pablo Isaza Denunciar

0

Para agregar a las respuestas anteriores.

Otra razón por la que sus filtros no funcionaron es porque

arr2[índice] saldrá del rango.

arr1 tenía más índices que arr2

about 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda