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

237
Vistas
Estoy tratando de excluir elementos de una matriz, pero estoy haciendo algo mal

Estoy tratando de crear este script: https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/seek-and-destroy

Después del comentario "Verificar y eliminar" es donde tengo el problema. Intento verificar todos los elementos de la matriz 'theCheck' con los elementos de 'destructores' y, si los elementos no coinciden, el script enviará ese valor a la matriz de salida.

Pero empuja cada elemento independientemente.

Valor de salida esperado: [1,1]

Valor del valor de salida actual: [1,2,3,1,2,3]

 function destroyer(arr) { let theCheck = []; let destroyers = []; let output = []; for (let i = 1; i < arguments.length; i++) { destroyers.push(arguments[i]); } for (let i = 0; i < arguments[0].length; i++) { theCheck.push(arguments[0][i]) } //Verify and delete var j = 0 for (let i = 0; i < theCheck.length; i++) { for (j = 0; j < destroyers.length; j++) { if (theCheck[i] !== destroyers[j]) { output.push(theCheck[i]) break; } } } console.log(theCheck) console.log(destroyers) console.log(output) return arr; } destroyer([1, 2, 3, 1, 2, 3], 2, 3);

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

0

Con el código actual, está recorriendo los destructores y cada vez que encuentra un destructor que no coincide con el elemento que está comprobando, lo está agregando a la salida. Pero debido a que tiene dos elementos en la matriz de destructores, está garantizado que uno de los dos no coincidirá con el elemento en particular que está verificando.

A continuación, se muestra una versión en la que determinamos si alguno de los destructores coincide con el elemento que estamos comprobando y, solo si no es así, lo agregamos a la salida:

 function destroyer(arr) { let theCheck = []; let destroyers = []; let output = []; for (let i = 1; i < arguments.length; i++) { destroyers.push(arguments[i]); } for (let i = 0; i < arguments[0].length; i++) { theCheck.push(arguments[0][i]) } //Verify and delete var j = 0 for (let i = 0; i < theCheck.length; i++) { let found = false; for (j = 0; j < destroyers.length; j++) { if (theCheck[i] === destroyers[j]) { found = true; } } if(!found) output.push(theCheck[i]); } console.log(theCheck) console.log(destroyers) console.log(output) return arr; } destroyer([1, 2, 3, 1, 2, 3], 2, 3);

Podría usar la función include para arreglar esto un poco:

 function destroyer(arr) { let theCheck = []; let destroyers = []; let output = []; for (let i = 1; i < arguments.length; i++) { destroyers.push(arguments[i]); } for (let i = 0; i < arguments[0].length; i++) { theCheck.push(arguments[0][i]) } //Verify and delete var j = 0 for (let i = 0; i < theCheck.length; i++) { if(!destroyers.includes(theCheck[i])) output.push(theCheck[i]); } console.log(theCheck) console.log(destroyers) console.log(output) return arr; } destroyer([1, 2, 3, 1, 2, 3], 2, 3);

about 4 years ago · Juan Pablo Isaza Denunciar

0

 function destroyer(input, ...arr) { return input.filter(element => !arr.includes(element)); } console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));

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