Ако сте разработчик на 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()

Методът .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

Сега нека напишем същия код с reduce:

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 цикъла с този метод, къде пасва. Ще ви помогне много да направите кода си по-чист и лесен за четене.

Приятно кодиране!