Метад map

Метад map дазваляе ўжыць зададзеную функцыю для кожнага элемента масіва. Пры гэтым метад не змяняе зыходны масіў, а вяртае зменены.

Метад у параметры атрымлівае функцыю, якая выканаецца для кожнага элемента масіва. Toе, што верне гэтая функцыя праз return для элемента масіва, стане новым значэннем гэтага элемента (гл. прыклады).

У функцыю можна перадаваць 3 параметры. Калі гэтыя параметры ёсць (яны не абавязковыя), то ў першы аўтаматычна трапіць элемент масіва, ў другі трапіць яго нумар у масіве (індэкс), а ў трэці - сам масіў.

Сінтаксіс

javascriptlet новы масіў = масіў.map(function(элемент, індэкс, масіў) {
  код
  return зменены элемент;
});

Прыклад

Стварым масіў, кожны элемент якога ўдвойчы большы за адпаведны элемент пачатковага масіва:

javascriptlet arr = [1, 2, 3, 4, 5];

let res = arr.map(function(elem) {
  return elem * 2;
});

console.log(res);

Вынік выканання кода:

javascript[2, 4, 6, 8, 10]

Прыклад

Стварым масіў, кожны элемент якога атрымліваецца так - значэнне элемента множыцца на яго парадкавы нумар у масіве:

javascriptlet arr = [1, 2, 3, 4, 5];

let res = arr.map(function(elem, index) {
  return elem * index;
});

console.log(res);

Вынік выканання кода:

javascript[0, 2, 6, 12, 20]

Прыклад

Пры неабходнасці ў трэці параметр можна перадаць сам масіў:

javascriptlet arr = [1, 2, 3, 4, 5];

let res = arr.map(function(elem, index, arr) {
  тут будзе даступны масіў arr
});

Прыклад

Метад map можна выкарыстоўваць і для перабору шматмерных масіваў. Хай, напрыклад, дадзены вось такі масіў:

javascriptlet arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

Давайце перабяром гэты масіў праз map і вывядзем яго элементы ў кансоль:

javascriptlet 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 да кожнага падмасіва і возьмем кожны яго элемент у квадрат:

javascriptlet 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);

Глядзіце таксама

  • метад forEach,
    які ўжывае функцыю для кожнага элемента масіва
  • метад filter,
    які дазваляе фільтраваць элементы масіва
  • метады some і every,
    якія выконваюць праверку масіва
  • метады reduce і reduceRight,
    якія згортваюць масіў да аднаго значэння