Map Metodu
map metodu, bir dizinin her elemanı
için belirtilen fonksiyonu uygulamayı sağlar.
Bu metod orijinal diziyi değiştirmez, bunun
yerine değiştirilmiş olanı döndürür.
Metod parametre olarak, dizinin her elemanı
için çalıştırılacak fonksiyonu alır.
Bu fonksiyonun return ile döndürdüğü
değer, dizinin o elemanının yeni değeri
olur (örneklere bakın).
Fonksiyona 3 parametre aktarılabilir.
Bu parametreler mevcutsa (zorunlu değildir),
birincisine otomatik olarak dizi elemanı,
ikincisine dizideki numarası (indeks),
üçüncüsüne ise dizinin kendisi gelir.
Sözdizimi
let yeni dizi = dizi.map(function(eleman, indeks, dizi) {
kod
return değiştirilmiş eleman;
});
Örnek
Her elemanı, başlangıç dizisinin karşılık gelen elemanının iki katı olan bir dizi oluşturalım:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Kodun çalıştırılma sonucu:
[2, 4, 6, 8, 10]
Örnek
Her elemanı şu şekilde elde edilen bir dizi oluşturalım - elemanın değeri, dizideki sıra numarası ile çarpılır:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Kodun çalıştırılma sonucu:
[0, 2, 6, 12, 20]
Örnek
Gerektiğinde üçüncü parametreye dizinin kendisi aktarılabilir:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
burada arr dizisine erişilebilir olacak
});
Örnek
map metodu çok boyutlu dizileri
gezmek için de kullanılabilir. Örneğin,
şu şekilde bir dizi verilmiş olsun:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Şimdi bu diziyi map ile gezelim
ve elemanlarını konsola yazdıralım:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
Sonuç olarak console.log önce [1,
2, 3], sonra [4, 5, 6], sonra
[7, 8, 9] yazdıracak.
Gördüğünüz gibi, elem değişkenine
alt diziler geliyor. Şimdi her bir alt diziye
map metodunu uygulayalım ve her bir
elemanının karesini alalım:
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);