Метод 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);