9.6 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Seek and Destroy | Найти и уничтожить |
Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу
и напишите свой собственный код 
Проблема Объяснение:
Эта проблема немного сложна, потому что вам нужно ознакомиться с Аргументами, так как вам придется работать с двумя или более, но на скрипте вы видите только два. Многие люди жестко программируют эту программу для трех аргументов. Вы удалите любое число из первого аргумента, который будет таким же, как и любые другие аргументы.
Связанные ссылки
Подсказка: 1
Вам нужно работать с arguments как если бы это был обычный массив. Лучший способ - преобразовать его в один.
попытаться решить проблему сейчас
Подсказка: 2
Вам необходимо отфильтровать, это также означает, что вам нужно создать функцию обратного вызова. Вы можете использовать различные методы, такие как: indexOf() , includes() . Если вам нужен другой подход, reduce() также может быть полезным; продолжайте читать эти документы!
попытаться решить проблему сейчас
Подсказка: 3
Для преобразования arguments в массив используйте этот код var args = Array.prototype.slice.call(arguments);
попытаться решить проблему сейчас
Осторожно, спойлеры!
Решение впереди!
Решение базового кода:
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);
}
Код Объяснение:
-
Создайте массив
argumentsиспользуяArray.prototype.slice.call()и сохраните его в переменныхargs. Мы будем использовать это для проверки противarr. -
Начните базовую
forконтура перебиратьarr. Гнездо другоеforцикла внутри первого, меняя целочисленную переменнуюjи arr на args. Этот второй цикл будет проходить черезargs.-
Во втором цикле создайте оператор
if, строго проверяя===что текущий val ofarr[i]равенargs[j]. -
Если значение в текущем индексе равно в обеих массивах, используйте
delete, чтобы удалить его изarr.
-
-
Вне вложенных циклов: вернуть измененный массив с помощью
Booleanобъекта в качестве фильтра для любогоnull, созданного операторомdelete.
Связанные ссылки
- [аргументы
- Array.filter ()
- удалять
- логический
Решение промежуточного кода:
function destroyer(arr) {
var args = Array.from(arguments).slice(1);
return arr.filter(function(val) {
return !args.includes(val);
});
}
Код Объяснение:
-
Объявите переменную с именем
argsи установите ее равным новому объектуArrayfrom()argumentsпереданных в функцию. В той же или следующей строке используйте методslice()дляargsначиная со второго индекса, 1. Это разделяет аргументы, используемые для фильтрации, в собственный массивargs. -
Возвращает фильтрованную массив, используя
includes()вvalargsincludes()в функции обратного вызова , чтобы проверить , еслиvalне вargs; возвращаетtrueчтобы сохранить значение в исходном массиве илиfalseчтобы удалить его.
Связанные ссылки
Расширенное решение для кода:
const destroyer = (arr, ...args) => arr.filter(i => !args.includes(i));
Код Объяснение:
- Код с использованием синтаксиса ES6 для объявления функции с использованием функций стрелок.
- Использование оператора спреда для извлечения аргументов.
- Верните фильтрованный массив, используя
includes().
Связанные ссылки
ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.- Добавьте объяснение своего решения.
- Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced .

- Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . (
НЕ удаляйте существующие имена пользователей )
Видеть
![]()
Wiki Challenge Solution TemplateдляWiki Challenge Solution Templateдля справки.


