Если вы не знакомы с методами массива .forEach()
или .reduce()
, я предлагаю вам проверить Почему и когда использовать forEach, отображать, фильтровать, сокращать и находить в JavaScript.
Когда использовать .every ()?
.every()
, если вы хотите получить одиночное логическое значение из нескольких элементов в массиве.
Условия:
- У вас есть массив.
- Вы хотите протестировать каждый элемент в массиве.
- Вы хотите знать, все ли элементы проходят этот тест.
true
/false
.
Как использовать .every ()?
Использование .every()
, аналогичных .reduce()
, за исключением неявного аккумулятора. т.е. вы даете .every()
тест для запуска для каждого элемента в массиве, и он отслеживает, вернет ли все true
или false
для вас.
Array.every(testFunction);
Пример:
var sampleArray = [ 1, 2, 3, 4, 5 ]; var sampleArray2 = [ 0, -1, -30, 5]; function tester(number){ return number > 0; } sampleArray.every(tester); // returns true sampleArray2.every(tester); // returns false
По сути, это происходит по каждому элементу массива и проверяется, все ли они верны.
Пример ES6:
Хорошим преимуществом синтаксиса es6
является то, что вы можете легко передать анонимную функцию тестера в сжатой форме.
const sampleArray = [ 1, 2, 3, 4, 5 ]; const sampleArray2 = [ 0, -1, -30, 5]; sampleArray.every( number => number > 0 ); // returns true sampleArray2.every( number => number > 0 ); // returns false
Зачем использовать .every ()?
Хорошо, тогда зачем использовать .every()
? Вы можете добиться того же, используя .reduce()
или .forEach()
или простой for
цикл. Давайте сравним другие реализации.
Для примера цикла
let sampleArray = [ 1, 2, 3 ]; let i; let isGreaterThanZero = number => number > 0; let allPositive = true; for (i=0; i < sampleArray.length; i++) { allPositive = allPositive && isGreaterThanZero(sampleArray[i]); }
Пример цикла For
let sampleArray = [ 1, 2, 3 ]; let isGreaterThanZero = number => number > 0; let allPositive = true; for (let i of sampleArray) { allPositive = allPositive && isGreaterThanZero(sampleArray[i - 1]); }
.forEach () Пример
let sampleArray = [ 1, 2, 3 ]; let isGreaterThanZero = number => number > 0; let allPositive = true; sampleArray.forEach( num => { allPositive = allPositive && isGreaterThanZero(num); });
.reduce () Пример
let sampleArray = [ 1, 2, 3 ]; let isGreaterThanZero = number => number > 0; let allPositive = sampleArray.reduce( (allPositive, num ) => { return allPositive && isGreaterThanZero(num); } );
.every () Пример
let sampleArray = [ 1, 2, 3 ]; let isGreaterThanZero = number => number > 0; let allPositive = sampleArray.every( num => isGreaterThanZero(num));
Хотя он имеет более узкий диапазон применения и, возможно, не так хорошо известен, как другие методы массива, .every()
по-прежнему является стандартным array
методом в Javascript.
Я надеюсь, что ответ на вопрос «Зачем использовать .every()
» ясен. На основе приведенных выше примеров… при использовании стандартных методов гораздо легче читать и быстро выяснять, что происходит. Если вы не используете стандартные методы, следующему разработчику, который рассмотрит этот код, придется потратить дополнительное время, чтобы понять, что происходит.