Метод Array Every в JavaScript

Метод Array Every в JavaScript

14 ноября 2022 г.

Иногда с массивами мы хотим проверить каждый элемент на определенное условие. Хотя отдельные условия можно легко проверить с помощью оператора if, с несколькими элементами массива это становится сложнее. Таким образом, Javascript предоставляет метод для массивов с именем every, который будет проверять каждый элемент для определенного теста. Если все пройдут тест, общий метод каждый будет проходить true. Если один или несколько методов не пройдут тест, общий метод каждый вернет false.

Проверка каждого элемента массива для теста

Предположим, у нас есть массив, в котором мы хотим проверить, превышает ли каждое число число 15. Это идеальное место для использования каждого. Давайте посмотрим.

let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every((el, index, array) => {
    return el > 15
});

console.log(check); // true

каждый принимает функцию типа (el, index, array) => ....

  • el – это текущий элемент, через который проходит every.
  • index – это индекс текущего элемента, который повторяется массивом.
  • массив – это полный массив, по которому выполняется итерация. Здесь это будет [ 25, 35, 45, 55, 65 ].

Поскольку стрелочные функции возвращают true, если в одной строке нет инструкции return, приведенный выше код также можно упростить до этого:

let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every((el, index, array) => el > 15);

console.log(check); // true

Кроме того, метод каждый может принимать другую форму, в которой он принимает имя функции обратного вызова вместе с пользовательским значением для this. Это означает, что вы можете создать функцию, а затем подготовить ее содержимое на основе пользовательского this внутри самой функции. Например, ниже я передаю {value: 15} в this, что позволяет нам изменить это значение, если мы захотим, в другое время, когда мы вызываем every:

let callbackFn = function(el) {
    if(this.value !== undefined) {
        return el > this.value
    }
    return false;
}

let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every(callbackFn, { value: 15 }); // Returns true

Изменение массива методом Every

Как и другие методы работы с массивами, Javascript позволяет модифицировать массив внутри вызываемого метода. Например, мы можем изменить каждый элемент нашего массива, а затем проверить его.

Поскольку каждый по существу представляет собой тип цикла, каждый элемент зацикливается последовательно:

let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every((el, index, array) => {
    arr[index] -= 100;
    return el > 5
});

// This is true, since we subtracted 100 from each element before the check
console.log(check); // true

Мы даже можем удалять элементы из массива в цикле every:

let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every((el, index, array) => {
    arr.pop();
    return el > 15;
});

console.log(arr); // returns [ 25, 35 ]

Javascript даже позволяет добавлять элементы в массив в every. Поскольку каждый срабатывает только один раз для каждого элемента в массиве, это не может привести к бесконечному циклу, просто помещая элементы в исходный массив:

let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every((el, index, array) => {
    arr.push(100);
    return el > 15;
});

// This is true, since we subtracted 100 from each element before the check
console.log(arr); // returns [25, 35, 45, 55, 65, 100, 100, 100, 100, 100]
console.log(check); // returns true

Заключение

Метод every — это встроенный способ выполнения логических тестов целых массивов. Вы должны быть осторожны с этим на больших массивах, так как это может привести к проблемам с производительностью. Однако в большинстве случаев это действительно полезный инструмент, который можно добавить в свой арсенал массивов. Есть много других случаев использования, когда every очень полезен. Например, вы также можете использовать каждый для проверить, является ли массив подмножеством другого массива.


Также опубликовано здесь


Оригинал