Tüm blog yazıları

JavaScript’te Fonksiyon Alan Dizi Metotları

JavaScript'te program yazarken en sık kullandığımız veri yapılarından biri dizilerdir (arrays). Diziler, birden fazla veriyi tek bir yerde saklamamıza olanak tanır. Örneğin, bir alışveriş sepetindeki ürünler, bir öğrencinin aldığı notlar ya

eminbasbayan4 dk okuma
JavaScript’te Fonksiyon Alan Dizi Metotları

JavaScript'te program yazarken en sık kullandığımız veri yapılarından biri dizilerdir (arrays). Diziler, birden fazla veriyi tek bir yerde saklamamıza olanak tanır. Örneğin, bir alışveriş sepetindeki ürünler, bir öğrencinin aldığı notlar ya da bir kitap listesindeki kitaplar bir dizide tutulabilir.

Bu dizilerle etkili şekilde çalışabilmek için JavaScript bize bazı hazır metotlar (yöntemler) sunar. Bu metotlardan bazıları, çalışmak için bir fonksiyona ihtiyaç duyar. Bu yazıda, dizi metotlarına fonksiyon geçmenin mantığını ve bu metotlarla birlikte sıklıkla kullanılan arrow function (ok fonksiyonu) yapısını adım adım öğreneceğiz. Ayrıca, diziyi doğrudan değiştiren ve değiştirmeyen metotlar arasındaki farkı da örneklerle inceleyeceğiz.

1. Neden Fonksiyon Veriyoruz?

JavaScript'te bazı metotlar, dizi elemanlarıyla ne yapılacağını sizin tanımlamanızı ister. Yani "her bir elemanla ne yapılacak?" sorusunun cevabını, bir fonksiyon yazarak metota verirsiniz. Bu fonksiyon, dizi içindeki her eleman için çalıştırılır.

Mantık şudur:

  1. Diziye ait bir metot çağrılır.
  2. Bu metot, her bir eleman için verdiğiniz fonksiyonu çalıştırır.
  3. Fonksiyonun dönüş değerine göre işlem yapılır (örneğin filtreleme, dönüştürme ya da kontrol etme).

2. Değiştirmeyen Metotlar

filter(), map() ve find() gibi metotlar, üzerinde işlem yaptıkları ana diziyi değiştirmez, bunun yerine her zaman yeni bir dizi veya değer döndürürler. Bu metotlar, orijinal veriyi koruyarak çalışmak için idealdir.

Örnek: filter() Metodu

filter() metodu, bir dizideki elemanları süzmek için kullanılır. Sadece belirli şartlara uyan elemanları almak istediğinizde bu metot devreye girer.

Senaryo:

Bir kütüphanede yüzlerce kitap var. Ama siz sadece 300 sayfadan fazla olanları listelemek istiyorsunuz.

jsx
const kitaplar = [
  { ad: "Beyaz Diş", sayfa: 180 },
  { ad: "1984", sayfa: 326 },
  { ad: "Dönüşüm", sayfa: 150 },
  { ad: "Suç ve Ceza", sayfa: 430 }
];

const uzunKitaplar = kitaplar.filter(function(kitap) {
  return kitap.sayfa > 300;
});

console.log(uzunKitaplar);
// Çıktı:
// [ { ad: "1984", sayfa: 326 }, { ad: "Suç ve Ceza", sayfa: 430 } ]

console.log(kitaplar);
// Çıktı:
/* [ { ad: "Beyaz Diş", sayfa: 180 }, { ad: "1984", sayfa: 326 },
 { ad: "Dönüşüm", sayfa: 150 }, { ad: "Suç ve Ceza", sayfa: 430 } ] */

Bu örnekte, filter() metodu yeni bir dizi olan uzunKitaplar dizisini oluşturdu. Orijinal kitaplar dizisi ise değişmeden kaldı.

3. Arrow Function (Ok Fonksiyonu) ile Kısaltma

Yukarıdaki örnekte klasik function söz dizimini kullandık. Modern JavaScript'te bunu arrow function ile daha kısa ve anlaşılır yazabiliriz:

jsx
const uzunKitaplar = kitaplar.filter(kitap => kitap.sayfa > 300);

Arrow function'ın avantajları:

  • function kelimesine gerek yoktur.
  • Tek satırlık dönüşlerde return yazmanıza gerek yoktur.
  • Kod daha sade ve okunabilir olur.

4. Ana Diziyi Değiştiren Metotlar

Bazı dizi metotları ise, filter() gibi yeni bir dizi döndürmek yerine doğrudan ana diziyi değiştirir (mutate). Bu metotları kullanırken dikkatli olmalısınız çünkü orijinal veriniz kalıcı olarak değişebilir. push(), pop(), splice(), sort() ve reverse() gibi metotlar bu kategoriye girer.

Örnek: sort() Metodu

sort() metodu, bir dizinin elemanlarını sıralamak için kullanılır. Varsayılan olarak, elemanları string'e dönüştürerek alfabetik olarak sıralar. Sayısal sıralama için ise bir fonksiyon geçmeniz gerekir.

Senaryo:

Öğrenci notlarını küçükten büyüğe sıralamak istiyorsunuz.

jsx
const notlar = [45, 67, 30, 88, 54, 40];

// Klasik fonksiyon sözdizimi ile sıralama
notlar.sort(function(a, b) {
  return a - b;
});

console.log(notlar);
// Çıktı:
// [30, 40, 45, 54, 67, 88]

5. Fonksiyon Alan Dizi Metotları ve Özeti

JavaScript'te birçok dizi metodu fonksiyon parametresi alır. En sık kullanılanlar aşağıdaki tabloda özetlenmiştir:

MetotAçıklamaAna Diziyi Değiştirir mi?
forEach()Her elemanı tek tek dolaşır.Hayır
map()Her elemanı dönüştürerek yeni bir dizi döner.Hayır
filter()Şartı sağlayanları yeni bir dizi olarak döner.Hayır
find()İlk uygun elemanı döner.Hayır
some()En az bir eleman şartı sağlıyorsa true döner.Hayır
every()Tüm elemanlar şartı sağlıyorsa true döner.Hayır
reduce()Diziyi tek bir değere indirger.Hayır
sort()Diziyi yerinde sıralar.Evet
splice()Diziden eleman ekler/çıkarır.Evet
reverse()Dizinin sırasını tersine çevirir.Evet

6. Sonuç

Artık sadece klasik for döngülerine bağlı kalmanıza gerek yok. map, filter, reduce gibi modern dizi metotları sayesinde işlemleri çok daha kısa ve anlaşılır yazabilirsiniz. Bu metotları kullanırken, ana diziyi değiştirip değiştirmediklerini bilmek kritik öneme sahiptir.

  • Fonksiyonlar, dizi metotlarının kalbidir.
  • Arrow function, bu fonksiyonları daha pratik yazmanızı sağlar.
  • Diziyi değiştiren metotları kullanırken, orijinal veriyi korumak için dizinin bir kopyasıyla çalışmayı unutmayın.

Bu kavramları iyi kavradığınızda, JavaScript dizilerini çok daha güçlü ve etkili bir şekilde kullanabilirsiniz.

JavaScript Classes ile pratik uygulamalar, metotlar arası iletişim ve gerçek dünya kod örnekleri
JavaScript Dersleri9 dk okuma

JavaScript Classes - Pratik Uygulamalar

JavaScript class'ları ile pratik uygulamalara geçin! Metotlar arası iletişimden constructor'da metot çağırmaya, kod tekrarını azaltmaktan gerçek dünya senaryolarına kadar class kullanımının inceliklerini keşfedin. Kendi alışveriş sepeti örneğinizle bilginizi pekiştirin.

Yazıyı oku
JavaScript class yapısını gösteren bir kod örneği, ES6 ile modern nesne oluşturma
JavaScript Dersleri9 dk okuma

JavaScript Classes

ES6 ile JavaScript'e gelen class yapısı sayesinde nesne oluşturmak artık çok daha kolay ve düzenli! Constructor function karmaşasından kurtulup, okunabilir ve yönetilebilir kodlar yazmak isteyenler için modern JavaScript'in temel taşı olan class'ları tüm detaylarıyla keşfedin. Bu rehberle nesne şabl

Yazıyı oku
JavaScript kodunda Constructor Function ve new keyword'ü ile nesne oluşturma örnekleri
JavaScript Dersleri8 dk okuma

Constructor Functions ve new Keyword

Factory Function'ların hafıza israfı sorununa Constructor Function'lar ve new keyword'ü ile son verin! Metotları paylaştırarak JavaScript objelerini daha verimli nasıl oluşturacağınızı, new'in perde arkasında neler yaptığını ve prototype sisteminin gücünü bu rehberde keşfedin.

Yazıyı oku

Çerez tercihlerin

Platformun çalışması için zorunlu çerezler kullanıyoruz. İzin verirsen anonim kullanım verilerini ölçüyoruz. Ayrıntıları incele