Одна из самых больших проблем при изучении 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) )