map методу
map методу массивдин ар бир элементи үчүн
белгиленген функцияны колдонууга мүмкүндүк берет.
Бул учурда метод баштапкы массивди өзгөртпөйт,
тескерисинче өзгөртүлгөн массивди кайтарат.
Метод параметр катары массивдин ар бир элементи
үчүн ишке ашырыла турган функцияны алат.
Бул функциянын return аркылуу массив элементи
үчүн кайтарып бергени, ошол элементтин жаңы
мааниси болуп калат (мисалдарды караңыз).
Функцияга 3 параметр берүүгө болот.
Эгерде бул параметрлер бар болсо (алар милдеттүү
эмес), анда биринчиси автоматтык түрдө массивдин
элементине, экинчиси анын массивдеги номуруна
(индексине), үчүнчүсү массивдин өзүнө түшөт.
Синтаксис
javascriptlet жаңы массив = массив.map(function(элемент, индекc, массив) {
код
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);