7.0 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Seek and Destroy | Buscar y destruir |
Recuerda usar Read-Search-Ask si te atascas. Tratar de emparejar el programa
y escribe tu propio código 
Explicación del problema:
Este problema es un poco complicado porque debe familiarizarse con Argumentos, ya que tendrá que trabajar con dos o más, pero en el script solo verá dos. Muchas personas codifican este programa por tres argumentos. Eliminarás cualquier número del primer argumento que sea el mismo que cualquier otro argumento.
Enlaces relevantes
Sugerencia: 1
Necesitas trabajar con arguments como si fuera una matriz regular. La mejor manera es convertirlo en uno.
intenta resolver el problema ahora
Sugerencia: 2
Necesita filtrar, esto también significa que necesita crear una función de devolución de llamada. Puedes usar varios métodos como: indexOf() , includes() . Si necesita otro enfoque, reduce() también podría ser de utilidad; ¡Sigue leyendo esos documentos!
intenta resolver el problema ahora
Sugerencia: 3
Para convertir arguments en una matriz, use este código var args = Array.prototype.slice.call(arguments);
intenta resolver el problema ahora
¡Alerta de spoiler!
¡Solución por delante!
Solución de código básico:
function destroyer(arr) {
var args = Array.prototype.slice.call(arguments);
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < args.length; j++) {
if (arr[i] === args[j]) {
delete arr[i];
}
}
}
return arr.filter(Boolean);
}
Explicación del código:
-
Cree una matriz de
argumentsutilizandoArray.prototype.slice.call()y guárdelo en la variableargs. Usaremos esto para verificar contraarr. -
Inicie un ciclo básico
foriterar a través dearr. Anide otro buclefordentro del primero, cambiando la variable enterajy arr a args. Este segundo bucle se repetirá a través deargs.-
Dentro del segundo bucle, cree una sentencia
if, verificando estrictamente===que el valor actual dearr[i]es igual aargs[j]. -
Si el valor en el índice actual es igual en ambas matrices, use
deletepara eliminarlo dearr.
-
-
Fuera de los bucles anidados: devuelva la matriz modificada utilizando el objeto
Booleancomo filtro para cualquiernullcreado por el operador dedelete.
Enlaces relevantes
- [argumentos
- Array.filter ()
- borrar
- Booleano
Solución de código intermedio:
function destroyer(arr) {
var args = Array.from(arguments).slice(1);
return arr.filter(function(val) {
return !args.includes(val);
});
}
Explicación del código:
-
Declare una variable llamada
argsyargsa un nuevo objetoArrayfrom()losargumentspasados a la función. En la misma línea o en la siguiente, use el métodoslice()enargspartir del segundo índice, 1. Esto separa los argumentos utilizados para filtrar en su propia matriz deargs. -
Devuelva la matriz filtrada, utilizando
includes()en la función de devolución de llamada para verificar sivalno está enargs; devolviendotruepara mantener el valor en la matriz original ofalsepara eliminarlo.
Enlaces relevantes
Solución avanzada de código:
const destroyer = (arr, ...args) => arr.filter(i => !args.includes(i));
Explicación del código:
- Código usando la sintaxis ES6 para declarar la función usando las funciones de flecha.
- Usando el operador de propagación para recuperar los argumentos.
- Devuelve la matriz filtrada, utilizando
includes().
Enlaces relevantes
NOTAS PARA LAS CONTRIBUCIONES:
NO agregue soluciones que sean similares a las soluciones existentes. Si cree que es similar pero mejor , intente fusionar (o reemplazar) la solución similar existente.- Agregue una explicación de su solución.
- Categorice la solución en una de las siguientes categorías: Básica , Intermedia y Avanzada .

- Agregue su nombre de usuario solo si ha agregado algún contenido principal relevante . (
NO elimine ningún nombre de usuario existente )
Ver
![]()
Wiki Challenge Solution Templatepara referencia.


