Reduce Metodu
Coddy'nin JavaScript Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 54 / 65.
reduce() yöntemi, dizinin her bir öğesi için sağlanan bir fonksiyonu yürüterek bir diziyi tek bir değere "indirgemenize" olanak tanır. Bu tek değer bir sayı, dize, nesne veya hatta başka bir dizi olabilir.
İşte reducer'ın söz dizimi:
array.reduce(function(accumulator, currentValue, currentIndex, array) {
// güncellenmiş accumulator değerini döndürün
}, initialValue);Temel Bileşenler:
- accumulator: callback'in dönüş değerlerini biriktirir (bunu yürüyen toplam olarak düşünebilirsiniz)
- currentValue: Dizide o anda işlenen öğe
- currentIndex: (isteğe bağlı) Mevcut elemanın indeksi
- array: (isteğe bağlı) reduce() yönteminin çağrıldığı dizi
- initialValue: (isteğe bağlı) Callback fonksiyonunun ilk çağrısındaki ilk argüman olarak kullanılacak değer
Örneğin - sayıların toplamı:
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15Adım Adım Nasıl Çalışır:
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, curr) => {
console.log(`Accumulator: ${acc}, Current Value: ${curr}`);
return acc + curr;
}, 0);
// Çıktı:
// Biriktirici: 0, Mevcut Değer: 1
// Biriktirici: 1, Mevcut Değer: 2
// Biriktirici: 3, Mevcut Değer: 3
// Biriktirici: 6, Mevcut Değer: 4
// Nihai sonuç: 10Görev
KolayMarket ürünlerini temsil eden bir nesne dizisi alan calculateGroceryTotal adında bir fonksiyon oluşturun.
Her nesnenin iki özelliği vardır:
name: string (ürünün adı)price: number (ürünün fiyatı)
Fonksiyon şunları yapmalıdır:
- Tüm ürünlerin toplam maliyetini hesaplayın
- Bir indirim uygulayın: - Toplam 100'ün üzerindeyse %10 indirim uygulayın
- Toplam 50'nin üzerinde ancak 100'e eşit veya altındaysa %5 indirim uygulayın
- 50 veya daha düşük toplamlar için indirim uygulamayın.
Şunları içeren bir nesne döndürün:
originalTotal: indirimden önceki toplamdiscount: tasarruf edilen miktarfinalTotal: indirimden sonraki nihai miktar
Kopya kağıdı
reduce() metodu, her bir öğe için bir fonksiyon çalıştırarak bir diziyi tek bir değere indirger:
array.reduce(function(accumulator, currentValue, currentIndex, array) {
// güncellenmiş accumulator değerini döndür
}, initialValue);Temel Bileşenler:
- accumulator: Geri çağırma fonksiyonunun (callback) dönüş değerlerini biriktirir (yürüyen toplam)
- currentValue: İşlenen mevcut öğe
- currentIndex: (isteğe bağlı) Mevcut öğenin indeksi
- array: (isteğe bağlı) reduce() metodunun çağrıldığı dizi
- initialValue: (isteğe bağlı) accumulator için başlangıç değeri
Örnek - sayıların toplamı:
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15Adım adım yürütme:
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, curr) => {
console.log(`Accumulator: ${acc}, Current Value: ${curr}`);
return acc + curr;
}, 0);
// Çıktı:
// Accumulator: 0, Current Value: 1
// Accumulator: 1, Current Value: 2
// Accumulator: 3, Current Value: 3
// Accumulator: 6, Current Value: 4
// Sonuç: 10Kendin dene
function calculateGroceryTotal(items) {
// Kodu buraya yazın
return {
originalTotal: Math.round(originalTotal * 100) / 100, // 2 ondalık basamağa yuvarla
discount: Math.round(discount * 100) / 100,
finalTotal: Math.round(finalTotal * 100) / 100
};
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Derinlemesine Stringler
String TemelleriString Üzerinde YinelemeTemplate LiteralsString MetotlarıÖzet - String Weaver4JSON Bölüm 2
JSON Üzerinde Yinelemeİç İçe Geçmiş JSONJSON Optional ChainingSığ ve Derin KopyalamaÖzet - Bisiklet MağazasıÖzet - Güneş Sistemi7Kütüphane Yönetim Sistemi
Projeye Genel BakışKitap Ekleme10Festival Sistemi Yönetimi
Projeye Genel BakışFilm ve Mekan Ekle2Çok Boyutlu Diziler
2D Dizi Temelleri2D Dizi Elemanlarına Erişme2D Dizilerle İç İçe DöngülerÖzet - 2D DizilerMatris Toplama ve ÇıkarmaDüzensiz Diziler3D Diziler ve ÖtesiYaygın 2D Dizi DesenleriÖzet - Diziler Hakkında Her Şey5Kümeler Bölüm 1
Küme Nedir?Kümeler Üzerinde YinelemeEleman EklemeEleman SilmeEleman Varlığını Kontrol EtmeBoyut ve Boş Olma DurumuKopyalama ve TemizlemeÖzet - Kümelerin Temelleri8Diziler: İlginç Konular
Dizi Yapı SökümüDizilerde Spread SözdizimiSeyrek DizilerÖzet - Diziler Workshop3JSON Bölüm 1
JSON Nedir?Anahtarın Varlığını Kontrol EtmeNesne MetotlarıSpread Operatörü Bölüm 1Spread Operatörü Bölüm 2Anahtarları KaldırmaÖzet - JSON Anahtarlarını Yönetme6Kümeler Bölüm 2
Matematik - Kümelerin BirleşimiMatematik - Kümelerin KesişimiMatematik - Kümelerin FarkıMatematik - Simetrik FarkAlt Kümeler ve Üst KümelerÖzet - Arkadaşları Gruplandırma9İleri Seviye Dizi Metotları
Join ve Split MetotlarıMap MetoduFilter MetoduReduce MetoduDizi Metotlarını ZincirlemeForEach ve Map Aynı mı?Sort MetoduFind ve FindIndex MetotlarıÖzet - Zincir Ustası