freeCodeCamp/guide/spanish/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../drop-it/index.md

7.0 KiB

title localeTitle
Drop it Déjalo caer

:triangular_flag_on_post: Recuerda usar Read-Search-Ask si te atascas. Tratar de emparejar el programa :busts_in_silhouette: y escribe tu propio código :pencil:

:checkered_flag: Explicación del problema:

Básicamente, mientras que el segundo argumento no es verdadero, tendrá que eliminar el primer elemento de la izquierda de la matriz que se pasó como primer argumento.

Enlaces relevantes

:speech_balloon: Sugerencia: 1

Puede usar Array.prototype.shift() o el filtro con el que debería estar más familiarizado para resolver este problema en unas pocas líneas de código.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 2

Shift devuelve el elemento que se eliminó, el cual no necesitamos realmente, todo lo que necesitamos es la matriz modificada que queda.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 3

Si aún no puede descubrir cómo resolverlo con shift, intente resolverlo con filtro y verifique cómo funciona el filtro. Si se familiariza con él, puede hacer el código con shift.

intenta resolver el problema ahora

¡Alerta de spoiler!

señal de advertencia

¡Solución por delante!

:beginner: Solución de código básico:

function dropElements(arr, func) { 
  // drop them elements. 
  var times = arr.length; 
  for (var i = 0; i < times; i++) { 
    if (func(arr[0])) { 
      break; 
    } else { 
      arr.shift(); 
    } 
  } 
  return arr; 
 } 
 
 // test here 
 dropElements([1, 2, 3, 4], function(n) {return n >= 3;}) 

:rocket: Ejecutar código

Explicación del código:

  • Crea un bucle for para comprobar cada elemento.
  • Luego verifique la función dada si es verdadera, luego deténgase, de lo contrario elimine ese elemento.
  • devuelve la matriz.

Enlaces relevantes

:sunflower: Solución de código intermedio:

function dropElements(arr, func) { 
  return arr.slice(arr.findIndex(func) >= 0 ? arr.findIndex(func): arr.length, arr.length); 
 } 
 
 // test here 
 dropElements([1, 2, 3, 4], function(n) {return n >= 3;}); 

:rocket: Ejecutar código

Explicación del código:

  • Use la función findIndex() ES6 para encontrar el índice del elemento que pasa la condición
  • Corte la matriz desde el índice encontrado hasta el final
  • ¡Hay un caso de borde! si la condición no se cumple con cualquiera de los elementos, 'findIndex' devolverá -1 que desordena la entrada a slice() . En este caso, use un operador condicional simple para devolver false lugar de -1 . Y el operador ternario (? :slight_smile: devuelve el índice encontrado de los elementos requeridos cuando la condición es true y, de lo contrario, la longitud de la matriz, de modo que el valor de retorno sea una matriz vacía como se indica.

Enlaces relevantes

:rotating_light: Solución avanzada de código:

function dropElements(arr, func) { 
  while(arr.length > 0 && !func(arr[0])) { 
    arr.shift(); 
  } 
  return arr; 
 } 
 
 // test here 
 dropElements([1, 2, 3, 4], function(n) {return n >= 3;}); 

:rocket: Ejecutar código

Explicación del Código

  • Use un bucle while con Array.prototype.shift() para continuar verificando y soltando el primer elemento de la matriz hasta que la función devuelva true. También se asegura de que la matriz no esté vacía primero para evitar bucles infinitos.
  • Devuelve la matriz filtrada.

Enlaces relevantes

:clipboard: NOTAS PARA LAS CONTRIBUCIONES:

  • :warning: 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 . :traffic_light:
  • Agregue su nombre de usuario solo si ha agregado algún contenido principal relevante . ( :warning: NO elimine ningún nombre de usuario existente )

Ver :point_right: Wiki Challenge Solution Template para referencia.