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