Какие бывают перебирающие методы для массивов в js?
map
Метод .map
проходит по массиву, выполняя необходимые преобразования каждого элемента.
Возвращает новый преобразованный массив такого же размера, что и исходный.
const letters = ['a', 'b', 'c', 'd'];
const upperLetters = letters.map((letter) => letter.toUpperCase());
console.log(upperLetters); // => ['A', 'B', 'C', 'D']
filter
Метод .filter
отбирает из массива элементы, удовлетворяющие нашим критериям. В качестве параметра метод принимает функцию-предикант в которой описываются критерии для отбора. Переданная функция должна возвращать true
или false
.
.filter
возвращает новый массив с элементами, которые прошли проверку. Если ни один элемент не прошёл проверку, то будет возвращён пустой массив.
const numbers = [10, 2, 3, 5, 9, 0, 7, 4];
const filteredNumbres = numbers.filter((n) => n >= 5 && n < 10);
console.log(filteredNumbres); // => [5, 9, 7]
reduce
Метод .reduce
применяется, когда нужно вычислить значение на основании набора данных.
Результатом работы метода может быть любой тип данных, как примитивный, так и составной.
const numbers = [10, 2, 3, 5, 9, 0, 7, 11];
const sum = numbers.reduce((acc, n) => acc + n, 0);
console.log(sum); // => 47
const fruits = ['apples', 'bananas', 'oranges', 'apples', 'kiwi', 'apples'];
const fruitsCount = fruits.reduce((acc, fruit) => {
const value = (acc[fruit] ?? 0) + 1;
return {...acc, [fruit]: value};
}, {});
console.log(fruitsCount); // => {apples: 3, bananas: 1, oranges: 1, kiwi: 1}
some
Метод .some()
перебирает исходный массив и возвращает true, если хотя бы один из элементов массива удовлетворяет нашему условию.
const numbers = [10, 2, 3, 5, 9, 0, 7, 4];
const isEven = (n) => n % 2 === 0;
console.log(numbers.some(isEven)); // => true
every
Метод .every()
очень похож на .some(), но в отличие от первого возвращает true, только в том случае, если каждый элемент массива удовлетворяет нашему условию.
const numbers = [10, 2, 3, 5, 9, 0, 7, 4];
const isEven = (n) => n % 2 === 0;
console.log(numbers.every(isEven)); // => false
const numbers = [10, 8, 20, 54, 92, 2, 72, 4];
const isEven = (n) => n % 2 === 0;
console.log(numbers.every(isEven)); // => true
includes
Метод .includes()
можно использовать для проверки массива на наличие каких-либо элементов.
const fruits = ['apples', 'bananas', 'oranges'];
console.log(fruits.includes('oranges')); // => true
console.log(fruits.includes('kiwi')); // => false