Метод filter для массива - непонятное условие

287
25 мая 2017, 10:42

Есть задачка. Удалить все элементы из массива (arguments[0]), которые содержат значения из arguments[1], [2]..

Т.е destroyer([1, 2, 3, 1, 2, 3], 2, 3) должен удалять 2 и 3 из массива, и возвращать [1, 1]

А destroyer([3, 5, 1, 2, 2], 2, 3, 5) должен вернуть [1].

Я решил с помощью цикла, но нагуглил другой способ это сделать.

function destroyer(arr) {
    var args = Array.prototype.slice.call(arguments); // делаем массив
    args.splice(0,1); // удаляем первый элемент
    return arr.filter(function(element) {
        return args.indexOf(element) === -1; // ВОТ ЭТО СРАВНЕНИЕ НЕПОНЯТНО.
    });
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);

Я не врубаюсь что это значит

args.indexOf(element) === -1;

indexOf возвращает номер элемента массива, а не его значение.

Answer 1

.indexOf() возвращает -1, если этого элемента в искомом массиве нет. Иначе он вернет индекс этого элемента.

READ ALSO
Рендеринг компоненты из редьюсера

Рендеринг компоненты из редьюсера

Добрый вечерСтолкнулась со следующей проблемой:

274
Как получить значение с callback функции?

Как получить значение с callback функции?

Есть некий запрос к IndexedDB

351
Скрытие блоков jQuery

Скрытие блоков jQuery

Доброго времени суток,

330
SCE baseline region

SCE baseline region

Есть карта распределения тарифов SCE(Southern California Edison) по регионамНеобходимо определить к какому региону относится конкретный адрес, найти...

238