Методы массивов + стрелочные функции
Массивы мне нравятся.
Стрелочные функции мне тоже нравятся: они лаконичные и понятные.
О методах массивов можно почитать, например, в учебнике Кантора: 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