9.2 KiB
title | localeTitle |
---|---|
Drop it | Брось это |
Не забудьте использовать Read-Search-Ask
если вы застряли. Попробуйте подключить программу и напишите свой собственный код
Проблема Объяснение:
В основном, в то время как второй аргумент неверен, вам нужно будет удалить первый элемент слева от массива, который был передан в качестве первого аргумента.
Связанные ссылки
Подсказка: 1
Вы можете использовать Array.prototype.shift()
или фильтр, с которым вам лучше ознакомиться, чтобы решить эту проблему в нескольких строках кода.
попытаться решить проблему сейчас
Подсказка: 2
Shift возвращает удаленный элемент, который нам действительно не нужен, все, что нам нужно, это модифицированный массив, который остается.
попытаться решить проблему сейчас
Подсказка: 3
Если вы все еще не можете понять, как его решить с помощью сдвига, попробуйте решить его с помощью фильтра и проверьте, как работает фильтр, если вы знакомы с ним, тогда вы можете сделать код со сдвигом.
попытаться решить проблему сейчас
Осторожно, спойлеры!
Решение впереди!
Решение базового кода:
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;})
Код Объяснение:
- Создайте цикл for для проверки каждого элемента.
- Затем проверьте функцию, заданную, если true, а затем остановите, иначе удалите этот элемент.
- верните массив.
Связанные ссылки
Решение промежуточного кода:
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;});
Код Объяснение:
- Используйте функцию ES6
findIndex()
чтобы найти индекс элемента, который проходит условие - Нарежьте массив из найденного индекса до конца
- Есть один крайный кейс! если условие не встречается ни с одним из элементов, «findIndex» будет возвращать
-1
который помещает вход вslice()
. В этом случае используйте простой условный оператор для возвратаfalse
вместо-1
. И тройной оператор (? возвращает найденный индекс требуемых элементов, когда условиеtrue
, и длину массива в противном случае, чтобы возвращаемое значение представляло собой пустой массив, как указано.
Связанные ссылки
Расширенное решение для кода:
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;});
Обозначение кода
- Используйте цикл while с
Array.prototype.shift()
чтобы продолжить проверку и удаление первого элемента массива, пока функция не вернет значение true. Он также гарантирует, что сначала массив не пуст, чтобы избежать бесконечных циклов. - Верните фильтрованный массив.
Связанные ссылки
ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
- НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
- Добавьте объяснение своего решения.
- Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced .
- Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( НЕ удаляйте существующие имена пользователей )
Увидеть
Wiki Challenge Solution Template
дляWiki Challenge Solution Template
для справки.