JavaScript Map Filter Reduce Kullanımı

JavaScript JS Map Filter Reduce Client Side Programlama Client Side Programming

JavaScript map, filter, reduce fonksiyonları ile daha az kod ile dizi işlemleri kolayca yapılabilmektedir.

Array.map() Fonksiyonu

Map, eşleştirme metodudur. Verilen işlemi tüm dizi elemanları için çalıştırır ve sonucu yeni dizi olarak döndürür. Örneğin; tüm dizi değerleri 10 ile çarpılıyor;

Kod

var arrayNumbers = [1, 2, 3, 4, 5, 6, 7, 8];

var arrayMapResult = arrayNumbers.map(function (item, index, array) {
    console.log("item :", item);
    console.log("index :", index);
    console.log("array :", array);

    return item * 10;
});

console.log("arrayMapResult :", arrayMapResult);

// SONUÇ: [ 10, 20, 30, 40, 50, 60, 70, 80 ]

Daha kısa yazım yöntemleri ile de kullanılabilir;

Kod

var arrayNumbers = [1, 2, 3, 4, 5, 6, 7, 8];

var arrayMapResult2 = arrayNumbers.map((item, index, array) => {
    console.log("item :", item);
    console.log("index :", index);
    console.log("array :", array);

    return item * 10;
});

console.log("arrayMapResult2 :", arrayMapResult2);

// SONUÇ: [ 10, 20, 30, 40, 50, 60, 70, 80 ]

Kod

var arrayNumbers = [1, 2, 3, 4, 5, 6, 7, 8];

var arrayMapResult3 = arrayNumbers.map(item => {
    console.log("item :", item);

    return item * 10;
});

console.log("arrayMapResult3 :", arrayMapResult3);

// SONUÇ: [ 10, 20, 30, 40, 50, 60, 70, 80 ]

Kod

var arrayNumbers = [1, 2, 3, 4, 5, 6, 7, 8];

var arrayMapResult4 = arrayNumbers.map(item => item * 10);
console.log("arrayMapResult4 :", arrayMapResult4);

// SONUÇ: [ 10, 20, 30, 40, 50, 60, 70, 80 ]

Array.map() Fonksiyonu Örneği

Örneğin dizideki tüm şehir isimleri map fonksiyonu ile büyük harfe çevrilebilir;

Kod

var cities = [
    { "code": 39, "cityName": "Kırklareli", "region": "Marmara" },
    { "code": 40, "cityName": "Kırşehir", "region": "İç Anadolu" },
    { "code": 41, "cityName": "Kocaeli", "region": "Marmara" },
    { "code": 42, "cityName": "Konya", "region": "İç Anadolu" },
    { "code": 43, "cityName": "Kütahya", "region": "Ege" },
    { "code": 44, "cityName": "Malatya", "region": "Doğu Anadolu" },
    { "code": 45, "cityName": "Manisa", "region": "Ege" },
    { "code": 46, "cityName": "Kahramanmaraş", "region": "Akdeniz" },
    { "code": 47, "cityName": "Mardin", "region": "Güneydoğu Anadolu" },
    { "code": 48, "cityName": "Muğla", "region": "Ege" }
];

var cityNamesUppercase = cities.map(item => item.cityName.toUpperCase()); // şehir adını büyütür ve sadece şehir adını döndürür.
var citiesUppercase = cities.map(item => { item.cityName = item.cityName.toUpperCase(); return item; }); // şehir adını büyütür ve nesneyi döndürür.

console.log("cityNamesUppercase:", cityNamesUppercase);

// SONUÇ: [ "KIRKLARELI", "KIRŞEHIR", "KOCAELI", "KONYA", "KÜTAHYA", "MALATYA", "MANISA", "KAHRAMANMARAŞ", "MARDIN", "MUĞLA" ]


console.log("citiesUppercase:", citiesUppercase);

/* SONUÇ: [
    { code: 39, cityName: "KIRKLARELI", region: "Marmara" },
    { code: 40, cityName: "KIRŞEHIR", region: "İç Anadolu" },
    { code: 41, cityName: "KOCAELI", region: "Marmara" },
    { code: 42, cityName: "KONYA", region: "İç Anadolu" },
    { code: 43, cityName: "KÜTAHYA", region: "Ege" },
    { code: 44, cityName: "MALATYA", region: "Doğu Anadolu" },
    { code: 45, cityName: "MANISA", region: "Ege" },
    { code: 46, cityName: "KAHRAMANMARAŞ", region: "Akdeniz" },
    { code: 47, cityName: "MARDIN", region: "Güneydoğu Anadolu" },
    { code: 48, cityName: "MUĞLA", region: "Ege" }
]
*/

Array.filter() Fonksiyonu

Filter, süzme metodudur. Verilen koşul ile eşleşen dizi elemanlarını yeni bir dizi olarak döndürür. Örneğin dizi içerisinden sadece çift sayılar filtreleniyor;

Kod

var arrayNumbers = [1, 2, 3, 4, 5, 6, 7, 8];

var arrayFilterResult = arrayNumbers.filter(function (item, index, array) {
    console.log("item :", item);
    console.log("index :", index);
    console.log("array :", array);

    return item % 2 === 0;
});

console.log("arrayFilterResult :", arrayFilterResult);

// SONUÇ: [ 2, 4, 6, 8 ]

Daha kısa yazım yöntemleri ile de kullanılabilir;

Kod

var arrayFilterResult2 = arrayNumbers.filter((item, index, array) => {
    console.log("item :", item);
    console.log("index :", index);
    console.log("array :", array);

    return item % 2 === 0;
});

console.log("arrayFilterResult2 :", arrayFilterResult2);

// SONUÇ: [ 2, 4, 6, 8 ]

Kod

var arrayFilterResult3 = arrayNumbers.filter(item => {
    console.log("item :", item);

    return item % 2 === 0;
});

console.log("arrayFilterResult3 :", arrayFilterResult3);

// SONUÇ: [ 2, 4, 6, 8 ]

Kod

var arrayFilterResult4 = arrayNumbers.filter(item => item % 2 === 0);
console.log("arrayFilterResult4 :", arrayFilterResult4);

// SONUÇ: [ 2, 4, 6, 8 ]

Array.filter() Fonksiyonu Örneği

Örneğin dizideki sadece Marmara Bölgesi şehirleri filter fonksiyonu ile alınabilir;

Kod

var cities = [
    { "code": 39, "cityName": "Kırklareli", "region": "Marmara" },
    { "code": 40, "cityName": "Kırşehir", "region": "İç Anadolu" },
    { "code": 41, "cityName": "Kocaeli", "region": "Marmara" },
    { "code": 42, "cityName": "Konya", "region": "İç Anadolu" },
    { "code": 43, "cityName": "Kütahya", "region": "Ege" },
    { "code": 44, "cityName": "Malatya", "region": "Doğu Anadolu" },
    { "code": 45, "cityName": "Manisa", "region": "Ege" },
    { "code": 46, "cityName": "Kahramanmaraş", "region": "Akdeniz" },
    { "code": 47, "cityName": "Mardin", "region": "Güneydoğu Anadolu" },
    { "code": 48, "cityName": "Muğla", "region": "Ege" }
];

var citiesInMarmara = cities.filter(item => item.region === "Marmara");

console.log("citiesInMarmara :", citiesInMarmara);

/* SONUÇ: [
    { "code": 39, "cityName": "Kırklareli", "region": "Marmara" },
    { "code": 41, "cityName": "Kocaeli", "region": "Marmara" }
];
*/

Array.reduce() Fonksiyonu

Reduce azaltma, küçültme metodudue. Verilen işlem sonucuna göre tüm dizi elemanları için tek bir değer döndürür. Örneğin tüm dizi değerleri toplanıyor;

Kod

var arrayNumbers = [1, 2, 3, 4, 5, 6, 7, 8];

var resultSum = arrayNumbers.reduce(function (previousReturn, current, index, array) {
    console.log("previousReturn :", previousReturn);
    console.log("index :", index);
    console.log("current :", current);
    console.log("array :", array);

    return previousReturn + current;
}, 0);
console.log("resultSum :", resultSum);

// SONUÇ: 36

Daha kısa yazım yöntemleri ile de kullanılabilir;

Kod

var resultSum2 = arrayNumbers.reduce((previousReturn, current, index) => {
    console.log("previousReturn :", previousReturn);
    console.log("index :", index);
    console.log("current :", current);

    return previousReturn + current;
}, 0);

console.log("resultSum2 :", resultSum2);

// SONUÇ: 36

Kod

var resultSum3 = arrayNumbers.reduce((previousReturn, current) => {
    console.log("previousReturn :", previousReturn);
    console.log("current :", current);

    return previousReturn + current;
});
console.log("resultSum3 :", resultSum3);

// SONUÇ: 36

Kod

var resultSum4 = arrayNumbers.reduce((previousReturn, current) => previousReturn + current);
console.log("resultSum4 :", resultSum4);

// SONUÇ: 36

Array.reduce() Fonksiyonu Örneği

Örneğin dizideki en küçük kod değeri reduce fonksiyonu ile bulunabilir;

Kod

var cities = [
    { "code": 39, "cityName": "Kırklareli", "region": "Marmara" },
    { "code": 40, "cityName": "Kırşehir", "region": "İç Anadolu" },
    { "code": 41, "cityName": "Kocaeli", "region": "Marmara" },
    { "code": 42, "cityName": "Konya", "region": "İç Anadolu" },
    { "code": 43, "cityName": "Kütahya", "region": "Ege" },
    { "code": 44, "cityName": "Malatya", "region": "Doğu Anadolu" },
    { "code": 45, "cityName": "Manisa", "region": "Ege" },
    { "code": 46, "cityName": "Kahramanmaraş", "region": "Akdeniz" },
    { "code": 47, "cityName": "Mardin", "region": "Güneydoğu Anadolu" },
    { "code": 48, "cityName": "Muğla", "region": "Ege" }
];

var minimumValue = cities.reduce((min, item) => item.code < min ? item.code : min, cities[0].code);

console.log("minimumValue :", minimumValue);

// SONUÇ: 39

Örneğin dizideki bölgeye göre şehir sayısı bulunabilir;

Kod

var cities = [
    { "code": 39, "cityName": "Kırklareli", "region": "Marmara" },
    { "code": 40, "cityName": "Kırşehir", "region": "İç Anadolu" },
    { "code": 41, "cityName": "Kocaeli", "region": "Marmara" },
    { "code": 42, "cityName": "Konya", "region": "İç Anadolu" },
    { "code": 43, "cityName": "Kütahya", "region": "Ege" },
    { "code": 44, "cityName": "Malatya", "region": "Doğu Anadolu" },
    { "code": 45, "cityName": "Manisa", "region": "Ege" },
    { "code": 46, "cityName": "Kahramanmaraş", "region": "Akdeniz" },
    { "code": 47, "cityName": "Mardin", "region": "Güneydoğu Anadolu" },
    { "code": 48, "cityName": "Muğla", "region": "Ege" }
];

var groupByRegionCount = cities.map(city => city.region).reduce((previousValue, currentValue) => {
    if (previousValue[currentValue] == null) {
        previousValue[currentValue] = 1;
    } else {
        ++previousValue[currentValue];
    }
    return previousValue;
}, {});

console.log("groupByRegionCount :", groupByRegionCount);

// SONUÇ: { "Marmara": 2, "İç Anadolu": 2, "Ege": 3, "Doğu Anadolu": 1, "Akdeniz": 1, "Güneydoğu Anadolu": 1 }

Kaynaklar

  1. Understand JavaScript Reduce With 5 Examples , thecodebarbarian.com, 29.08.2022 tarihinde alındı.
  2. Array.prototype.reduce() , developer.mozilla.org, 29.08.2022 tarihinde alındı.
  3. Türkiye'nin illeri , tr.wikipedia.org, 29.08.2022 tarihinde alındı.

 


Beğen