Методы массивов + стрелочные функции


Массивы мне нравятся.
Стрелочные функции мне тоже нравятся: они лаконичные и понятные.

О методах массивов можно почитать, например, в учебнике Кантора: https://learn.javascript.ru/array-iteration
Этот пост - короткие варианты предложенных методов с использованием стрелочных функций


🔹  Array.prototype.filter() 

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

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.filter(a => a > 5);  // [6, 7, 8, 9, 10]



🔹  Array.prototype.map()

Тоже бежит по массиву, но не проверяет каждый элемент, а что-то делает с ним. Изменённые элементы складывает в новый массив.
Не изменяет исходный массив

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.map(a => a * 5); // [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]



🔹  Array.prototype.sort()

Пузырьковая сортировка — поочередно сравнивает два соседних элемента и переставляет их местами при необходимости.
Изменяет исходный массив.

По умолчанию сортирует элементы как строки, поэтому 10 < 2

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.sort(); // [1, 10, 2, 3, 4, 5, 6, 7, 8, 9]


Чтобы отсортировать элементы как числа, добавляем условие
Сортировка по возрастанию

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.sort((a, b) => a - b); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


Сортировка в спадающем порядке

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.sort((a, b) => b - a); // [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]



🔹  Array.prototype.reduce()

Сводит массив к одному значению

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.reduce((a, b) => a + b); // 55

Можно указать начальное значение, например, 0. Удобно, когда не уверены будет ли в массиве хоть один элемент

Для массива с данными значение не изменится

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.reduce((a, b) => a + b, 0); // 55

Для пустого массива разница есть:

var arr = [];
arr.reduce((a, b) => a + b); // TypeError: reduce of empty array with no initial value

var arr = [];
arr.reduce((a, b) => a + b, 0); // 0


🔹  Array.prototype.forEach()

Позволяет что-то сделать с каждым элементом массива.
Ничего не возвращает

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.forEach(a => a + 1); // undefined

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.forEach(a => alert(a + 1)); // выведет модальные окна с цифрами от 2 до 11