Если вы являетесь разработчиком JavaScript или только начинаете с JavaScript, где-то вы слышали о map(), filter() и reduce(). Иногда люди, которые плохо знакомы с этими функциями, не понимают, что именно эти функции делают и как их использовать? Давайте обсудим это в этой статье ниже один за другим.

.map()

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

const arr = [2, 4, 5, 6, 8]
//  double arr = [4, 8, 10, 12, 16]
//  triple arr = [8, 12, 15, 18, 24]

Давайте попробуем на примере:

let array = [1, 2, 3, 4, 5, 6]
function double(x){
return x * 2;
}
const result = array.map(double); // take callback function
//   Or with arrow function
const result = array.map(x => x * 2);
console.log(result);        // will print an array with double

.фильтр()

Метод .filter() используется для фильтрации массива. Он отфильтрует массив на основе некоторой логики и вернет вам массив с отфильтрованным значением. Скажем, например, у вас есть массив и вы хотите узнать, какие элементы больше определенного числа? Давайте попробуем.

let arr = [2, 8, 3, 4, 5, 6]
function greaterThan3(x){
return x > 3;
}
const result = arr.filter(greaterThan3); // take callback function
//   or with arrow function
const result = arr.filter(x => x > 3);
console.log(result);

.reduce()

Метод .reduce() используется там, где вам нужно взять все элементы массива и получить из них одно значение. Например, допустим, у нас есть массив, и нам нужно найти его сумму или максимум.

let arr = [1, 5, 6, 8, 9, 3]
// sum, maximum

Сначала я попытаюсь написать код нефункциональными способами программирования, а затем с помощью метода reduce(), так будет понятнее.

// Sum with non functional way
let arr = [2, 8, 3, 4, 5, 6];
function findSum(){
 let sum = 0;
  for(let i = 0; i < arr.length; i++){
   sum = sum + arr[i];
   }
  return sum;
 }
console.log(findSum());

Теперь нужно уменьшить очередь. Метод .reduce() принимает два аргумента:

arr.reduce(function(acc, curr){ // first parameter
// it will iterate over each element of array and this current(curr) with refer to current element of this array.
// Accumulator(acc) will accumulate the result for elements of the array.
},0) // second parameter
 it represents the initial value for the accumulator

Теперь напишем тот же код с сокращением:

let arr = [1, 2, 3, 4, 5, 6]
const result = arr.reduce(function(acc, curr){
   acc = acc + curr;
   return acc;
});
console.log(result);

Попробуйте!

Это самый простой способ использования .map(), .filter() и .reduce(). Если вы замените цикл for этим методом, он подойдет. Это очень поможет вам сделать ваш код более чистым и легким для чтения.

Удачного кодирования!