Reduce Metodu
Coddy'nin JavaScript Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 54 / 65.
reduce() metodu, dizinin her bir elemanı için sağlanan bir işlevi çalıştırarak bir diziyi tek bir değere "indirgemenize" (reduce) olanak tanır. Bu tek değer bir sayı, metin (string), nesne (object) veya hatta başka bir dizi olabilir.
İşte indirgeyicinin (reducer) sözdizimi:
array.reduce(function(accumulator, currentValue, currentIndex, array) {
// güncellenmiş accumulator değerini döndür
}, initialValue);Key Components:
- accumulator: Callback'in geri dönüş değerlerini biriktirir (bunu yürütülen toplam olarak düşünebilirsiniz)
- currentValue: Dizi içinde işlenmekte olan mevcut eleman
- currentIndex: (isteğe bağlı) Geçerli öğenin dizini (index)
- array: (isteğe bağlı) reduce() yönteminin üzerinde çağrıldığı dizi
- initialValue: (isteğe bağlı) Callback fonksiyonunun ilk çağrısında 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 alışverişi öğelerini temsil eden bir nesne dizisi alan calculateGroceryTotal adında bir function oluşturun.
Her nesnenin iki özelliği vardır:
name: string (öğenin adı)price: number (öğenin fiyatı)
Fonksiyon şunları yapmalıdır:
- Tüm öğelerin toplam maliyetini hesaplamalıdır
- Bir indirim uygulamalıdır: - Toplam 100'ün üzerindeyse %10 indirim uygulayın
- Toplam 50'nin üzerinde ancak 100'e eşit veya altında ise %5 indirim uygulayın
- 50 veya daha az olan toplamlar için indirim uygulanmaz.
Şunları içeren bir nesne return edin:
originalTotal: indirimden önceki toplamdiscount: tasarruf edilen miktarfinalTotal: indirimden sonraki nihai miktar
Kendin dene
function calculateGroceryTotal(items) {
// Kodu buraya yaz
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ı