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 işlevi çalıştırarak diziyi tek bir değere “indirmenizi” sağlar. Bu tek değer bir sayı, dize, nesne veya başka bir dizi bile olabilir.
Reducer'ın sözdizimi şöyledir:
array.reduce(function(accumulator, currentValue, currentIndex, array) {
// güncellenmiş accumulator değerini döndür
}, initialValue);Temel Bileşenler:
- accumulator: Geri çağırımın dönüş değerlerini biriktirir (bunu biriken toplam olarak düşünebilirsin)
- currentValue: Dizide işlenmekte olan geçerli öğe
- currentIndex: (isteğe bağlı) Geçerli öğenin indeksi
- dizi: (isteğe bağlı) reduce() metodunun çağrıldığı dizi
- initialValue: (isteğe bağlı) Geri çağırma işlevinin ilk çağrısında ilk argüman olarak kullanılacak bir 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ı:
// Birikim değeri: 0, Geçerli değer: 1
// Birikim değeri: 1, Geçerli değer: 2
// Birikim değeri: 3, Geçerli değer: 3
// Birikim değeri: 6, Geçerli değer: 4
// Sonuç: 10Görev
KolayMarket ürünlerini temsil eden nesnelerden oluşan bir dizi alan calculateGroceryTotal adlı bir fonksiyon oluştur.
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 hesapla
- İndirim uygula: - Toplam 100'ün üzerindeyse %10 indirim uygula
- Toplam 50'nin üzerindeyse ancak 100'e eşit veya daha düşükse %5 indirim uygula
- Toplam 50 veya daha düşükse indirim uygulama.
Şunları içeren bir nesne döndür:
originalTotal: indirim öncesindeki toplamdiscount: tasarruf edilen miktarfinalTotal: indirim sonrasındaki nihai tutar
Kendin dene
function calculateGroceryTotal(items) {
// Kodu buraya yazın
return {
originalTotal: Math.round(originalTotal * 100) / 100, // 2 ondalık basamağa yuvarlayın
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
1Dizeleri Derinlemesine İnceleme
Dize TemelleriDizeler Üzerinde YinelemeŞablon DizeleriDize MetotlarıTekrar - Dize Dokuyucu4JSON Bölüm 2
JSON Üzerinde Döngü Kurmaİç İçe JSONJSON İsteğe Bağlı ZincirlemeYüzeysel ve Derin KopyaTekrar - Bisikletçi DükkânıTekrar - Güneş Sistemi7Kütüphane Yönetim Sistemi
Projeye Genel BakışKitap Ekleme10Festival Sistemini Yönet
Proje Genel BakışıFilmler ve Mekanlar Ekle2Çok Boyutlu Diziler
2 Boyutlu Dizilerin Temelleri2 Boyutlu Dizi Elemanlarına Erişim2 Boyutlu Dizilerle İç İçe DöngülerTekrar - 2 Boyutlu DizilerMatris Toplama ve ÇıkarmaDüzensiz Diziler3 Boyutlu Diziler ve ÖtesiYaygın 2 Boyutlu Dizi KalıplarıTekrar - Diziler Hakkında Her Şey5Kümeler Bölüm 1
Küme Nedir?Kümeler Üzerinde YinelemeBir Eleman EklemeBir Elemanı KaldırmaBir Elemanın Var Olup Olmadığını Kontrol EtmeBoyut ve Boş Olma DurumuKopyalama ve TemizlemeÖzet - Kümelerin Temelleri8Dizilerle İlgili İlginç Konular
Dizi DestructuringDizilerde Spread SözdizimiSeyrek DizilerTekrar - Diziler Atölyesi3JSON Bölüm 1
JSON nedir?Anahtarın Var Olup Olmadığını Kontrol EtmeNesne MetotlarıSpread Operatörü Bölüm 1Spread Operatörü Bölüm 2Anahtarları KaldırmaTekrar - JSON Anahtarlarını İşlemeKendi başına pratik yap: Online JavaScript derleyicisi