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

9.2 KiB
Raw Blame History

title localeTitle
Drop it Брось это

:triangular_flag_on_post: Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу :busts_in_silhouette: и напишите свой собственный код :pencil:

:checkered_flag: Проблема Объяснение:

В основном, в то время как второй аргумент неверен, вам нужно будет удалить первый элемент слева от массива, который был передан в качестве первого аргумента.

Связанные ссылки

:speech_balloon: Подсказка: 1

Вы можете использовать Array.prototype.shift() или фильтр, с которым вам лучше ознакомиться, чтобы решить эту проблему в нескольких строках кода.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 2

Shift возвращает удаленный элемент, который нам действительно не нужен, все, что нам нужно, это модифицированный массив, который остается.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 3

Если вы все еще не можете понять, как его решить с помощью сдвига, попробуйте решить его с помощью фильтра и проверьте, как работает фильтр, если вы знакомы с ним, тогда вы можете сделать код со сдвигом.

попытаться решить проблему сейчас

Осторожно, спойлеры!

предупреждающий знак

Решение впереди!

:beginner: Решение базового кода:

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: Код запуска

Код Объяснение:

  • Создайте цикл for для проверки каждого элемента.
  • Затем проверьте функцию, заданную, если true, а затем остановите, иначе удалите этот элемент.
  • верните массив.

Связанные ссылки

:sunflower: Решение промежуточного кода:

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: Код запуска

Код Объяснение:

  • Используйте функцию ES6 findIndex() чтобы найти индекс элемента, который проходит условие
  • Нарежьте массив из найденного индекса до конца
  • Есть один крайный кейс! если условие не встречается ни с одним из элементов, «findIndex» будет возвращать -1 который помещает вход в slice() . В этом случае используйте простой условный оператор для возврата false вместо -1 . И тройной оператор (? :slight_smile: возвращает найденный индекс требуемых элементов, когда условие true , и длину массива в противном случае, чтобы возвращаемое значение представляло собой пустой массив, как указано.

Связанные ссылки

:rotating_light: Расширенное решение для кода:

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: Код запуска

Обозначение кода

  • Используйте цикл while с Array.prototype.shift() чтобы продолжить проверку и удаление первого элемента массива, пока функция не вернет значение true. Он также гарантирует, что сначала массив не пуст, чтобы избежать бесконечных циклов.
  • Верните фильтрованный массив.

Связанные ссылки

:clipboard: ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:

  • :warning: НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
  • Добавьте объяснение своего решения.
  • Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced . :traffic_light:
  • Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( :warning: НЕ удаляйте существующие имена пользователей )

Увидеть :point_right: Wiki Challenge Solution Template для Wiki Challenge Solution Template для справки.