Одна из самых больших проблем при изучении JavaScript после изучения Ruby связана с количеством встроенных методов, которые предлагает Ruby. Несколько раз мне казалось, что можно использовать популярный метод Ruby, например #count, которого не было в JavaScript. К этому потребовалось некоторое время, чтобы привыкнуть.
JavaScript предлагает очень полезный метод для массивов с именем filter()
. Метод filter вызывается для массива, передается в функцию, а затем перебирает каждый элемент массива. На основе параметров, которые вводит пользователь, метод вернет новый массив с элементами, прошедшими проверку, реализованную функцией.
Если нам дан массив возрастов и нам нужен список подростков, он будет выглядеть так:
const ages = [30, 32, 45, 17, 12, 22, 14, 16, 31]; let teens = ages.filter(function(age) { if (age >= 13 && age <= 19) { return true } })
Переменной teens присваивается значение, возвращаемое методом фильтра в массиве возрастов. Массив teens заполняется элементами, передающими условное выражение. Метод фильтра не изменяет массив, для которого он вызывается.
Приведенный выше пример можно реорганизовать с помощью стрелочной функции и без всего условного выражения.
const ages = [30, 32, 45, 17, 12, 22, 14, 16, 31]; let teens = ages.filter(age => (age >= 13 && age <= 19) )