Метод map
Методът map позволява да се приложи зададена
функция за всеки елемент от масив. При
това методът не променя оригиналния масив, а
връща променен.
Методът в параметър получава функция, която
ще се изпълни за всеки елемент от масива.
Това, което функцията върне чрез return
за елемента от масива, ще стане новата стойност
на този елемент (виж примерите).
Във функцията могат да се предават 3 параметъра.
Ако тези параметри съществуват (те не са задължителни),
тогава в първия автоматично ще попадне елементът
от масива, във втория ще попадне неговият номер в масива
(индекс), а в третия - самият масив.
Синтаксис
let нов масив = масив.map(function(елемент, индекс, масив) {
код
return променен елемент;
});
Пример
Нека създадем масив, всеки елемент от който е два пъти по-голям от съответния елемент от началния масив:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Резултат от изпълнението на кода:
[2, 4, 6, 8, 10]
Пример
Нека създадем масив, всеки елемент от който се получава така - стойността на елемента се умножава по неговия пореден номер в масива:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Резултат от изпълнението на кода:
[0, 2, 6, 12, 20]
Пример
При необходимост в третия параметър може да се подаде самият масив:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
// тук ще бъде достъпен масивът arr
});
Пример
Методът map може да се използва и за
обхождане на многомерни масиви. Нека, например,
е даден следният масив:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Нека да обходим този масив чрез
map и да изведем неговите елементи в конзолата:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
В резултат console.log ще изведе [1,
2, 3], след това [4, 5, 6], след това
[7, 8, 9].
Както виждате, в променливата elem попадат
подмасивите. Нека сега приложим метода
map към всеки подмасив и повдигнем
всеки негов елемент на квадрат:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
return elem.map(function(num) {
return num * num;
});
});
console.log(result);