Методи масивів вищого порядку в JavaScript

JavaScript надає ряд потужних інструментів для роботи з масивами, і методи вищого порядку є одними з найбільш універсальних і виразних. Ці методи спрощують операції з масивами, дозволяючи застосовувати функції безпосередньо до елементів, що покращує читабельність і підтримуваність коду. У цьому блозі ми розглянемо деякі з найбільш поширених методів вищого порядку для масивів: forEach, map, filter, reduce, find та some/every, з детальними прикладами та поясненнями.

pic

Що таке методи вищого порядку?

Метод вищого порядку — це функція, яка приймає іншу функцію як аргумент або повертає функцію. Такі методи масивів, як forEach, map та інші, використовують функції зворотного виклику (callback functions) для обробки кожного елемента масиву.

Приклад:

const numbers = [1, 2, 3, 4, 5];  

numbers.forEach(num => {  
 console.log(num * 2);  
});

Тут функція зворотного виклику (num => console.log(num * 2)) виконується для кожного елемента масиву numbers.

1. ForEach

Метод forEach виконує передану функцію один раз для кожного елемента масиву. Він нічого не повертає і зазвичай використовується для побічних ефектів, таких як логування або зміна зовнішніх змінних.

Приклад:

const fruits = ['apple', 'banana', 'cherry'];  

fruits.forEach((fruit, index) => {  
 console.log(`${index + 1}: ${fruit}`);  
});

Вивід:

1: apple  
2: banana  
3: cherry

2. Map

Метод map створює новий масив, заповнений результатами виклику переданої функції для кожного елемента оригінального масиву.

Приклад:

const numbers = [1, 2, 3, 4];  

const squared = numbers.map(num => num * num);  
console.log(squared);

що насправді відбувається,

const numbers = [1, 2, 3, 4];  

const squareFunc = (num) => {  
 return num * num;  
};  

const squared = numbers.map(squareFunc);  
console.log(squared);

Вивід:

[1, 4, 9, 16]

3. Filter

Метод filter створює новий масив з усіма елементами, які проходять перевірку, виконану переданою функцією.

Приклад:

const numbers = [10, 25, 30, 47];
const evenNumbers = numbers.filter(num => num % 2 === 0);  
console.log(evenNumbers);

що насправді відбувається,

const numbers = [10, 25, 30, 47];  

const isEven = (num) => {  
 return num % 2 === 0;  
};  

const evenNumbers = numbers.filter(isEven);  
console.log(evenNumbers);

Вивід:

[10, 30]

4. Reduce

Метод reduce виконує редукуючу функцію для кожного елемента масиву, що дозволяє отримати одне значення в результаті. Він часто використовується для операцій, таких як підсумовування значень, згладжування масивів або обчислення середнього значення.

Приклад:

const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);  
console.log(sum);

що насправді відбувається,

const numbers = [1, 2, 3, 4];  

const sumFunc = (accumulator, currentValue) => {  
 return accumulator + currentValue;  
};  

const sum = numbers.reduce(sumFunc, 0);  
console.log(sum);

Вивід:

10

5. Find

Метод find повертає перший елемент масиву, який задовольняє надану функцію перевірки. Якщо жоден елемент не задовольняє умову, повертається undefined.

Приклад:

const users = [  
 { id: 1, name: 'Alice' },  
 { id: 2, name: 'Bob' },  
 { id: 3, name: 'Charlie' }  
];
const user = users.find(user => user.id === 2);  
console.log(user);

що насправді відбувається,

const users = [  
 { id: 1, name: 'Alice' },  
 { id: 2, name: 'Bob' },  
 { id: 3, name: 'Charlie' }  
];  

const findUserById = (user) => {  
 return user.id === 2;  
};  

const user = users.find(findUserById);  
console.log(user);

Вивід:

{ id: 2, name: 'Bob' }

## Some & Every

- Метод `some` перевіряє, чи хоча б один елемент у масиві задовольняє умову.
- Метод `every` перевіряє, чи всі елементи в масиві задовольняють умову.

**Приклади:**

const numbers = [1, 2, 3, 4, 5];
```

const hasEven = numbers.some(num => num % 2 === 0);  
console.log(hasEven); // true

const allPositive = numbers.every(num => num > 0);  
console.log(allPositive); // true

що насправді відбувається,

const numbers = [1, 2, 3, 4, 5];  

const isAnyEven = (num) => {  
 return num % 2 === 0;  
};  

const areAllPositive = (num) => {  
 return num > 0;  
};  

const hasEven = numbers.some(isAnyEven);  
console.log(hasEven); // true  

const allPositive = numbers.every(areAllPositive);  
console.log(allPositive); // true

Порівняння

  1. forEach => Повертає undefined => Виконує побічні ефекти.
  2. map => Повертає новий масив => Трансформує кожен елемент.
  3. filter => Повертає новий масив => Витягує елементи, що відповідають умові.
  4. reduce => Повертає одне значення => Агрегує значення масиву.
  5. find => Повертає один елемент => Знаходить перший елемент, що відповідає умові.
  6. some => Повертає булеве значення => Перевіряє чи є хоча б один збіг.
  7. every => Повертає булеве значення => Перевіряє, чи всі елементи відповідають умові.

pic

Ключові висновки

  • Методики вищого порядку роблять операції з масивами більш декларативними та лаконічними.
  • Вибір правильного методу для завдання покращує читабельність і ефективність.
  • Розуміння цих методів значно підвищує вашу здатність працювати з масивами в JavaScript.

Почніть експериментувати з цими методами у своїх проєктах, і ви побачите, як вони спрощують маніпуляції з масивами! Щасливого кодування!

Перекладено з: Higher-Order Array Methods in JavaScript

Leave a Reply

Your email address will not be published. Required fields are marked *