Tüm blog yazıları

JavaScript’te Nesneler Üzerinde Döngü Kullanımı

JavaScript programlama dilinde verilerle çalışırken sıkça tekrarlayan işlemler yapmamız gerekebilir. Bu gibi durumlarda döngüler kullanılır. Diziler üzerinde döngü kurmak oldukça yaygındır; çünkü diziler “tekrarlanabilir” (iterable) yapılardır. Ancak bazen elimizde dizi değil de bir nesne (obj

eminbasbayan3 dk okuma
JavaScript’te Nesneler Üzerinde Döngü Kullanımı

JavaScript programlama dilinde verilerle çalışırken sıkça tekrarlayan işlemler yapmamız gerekebilir. Bu gibi durumlarda döngüler kullanılır. Diziler üzerinde döngü kurmak oldukça yaygındır; çünkü diziler “tekrarlanabilir” (iterable) yapılardır. Ancak bazen elimizde dizi değil de bir nesne (object) olur. İşte bu noktada, nesneler üzerinde nasıl döngü kurulacağı sorusu karşımıza çıkar. Bu yazıda sadece nesneler üzerinde döngü kurma konusunu ele alacağız ve for...in, Object metodları ve for...of döngüsünün sınırlarını inceleyeceğiz.

Nesneler ve for...of Döngüsü Uyumsuzluğu

JavaScript’te for...of döngüsü diziler, string’ler, Map ve Set gibi iterable yapılar üzerinde çalışır. Ancak { ad: "Zeynep", not: 95 } gibi bir nesne üzerinde for...of kullanırsanız şu hatayı alırsınız:

powershell
Uncaught TypeError: object is not iterable

Çünkü JavaScript nesneleri iterable olarak kabul etmez. Yani for...of doğrudan bir nesneyle çalışamaz. Peki, bu durumda ne yapacağız?

Nesne Üzerinde for...in Kullanımı

Eğer bir nesnedeki tüm anahtarları (key) sırayla dolaşmak istiyorsak for...in döngüsü yardımımıza yetişir. Bu döngü, nesnenin her özelliğini (property) tek tek verir.

Örnek:

jsx
const kitaplar = {
  "Harry Potter": 120,
  "Yüzüklerin Efendisi": 200,
  "Sefiller": 180
};

for (let kitap in kitaplar) {
  console.log(kitap); // kitap isimlerini yazdırır
}

Bu kod her bir anahtar üzerinde döner. Eğer kitap isimlerinin yanındaki sayfa sayılarını da göstermek istiyorsak:

jsx
for (let kitap in kitaplar) {
  console.log(`${kitap} kitabı ${kitaplar[kitap]} sayfa.`);
}

Burada kitaplar[kitap] ifadesi, anahtara karşılık gelen değeri verir. Yani "Harry Potter" anahtarı için kitaplar["Harry Potter"] sonucu 120 olacaktır.

Object.keys, Object.values, Object.entries Kullanımı

Modern JavaScript’te nesnelerle çalışırken Object sınıfına ait üç önemli yardımcı metot işimizi oldukça kolaylaştırır:

1. Object.keys(obj)

Bu metod, bize nesnedeki tüm anahtarları bir dizi olarak verir.

jsx
const arabalar = {
  BMW: 3,
  Mercedes: 5,
  Toyota: 7
};

const markalar = Object.keys(arabalar);
console.log(markalar); // ["BMW", "Mercedes", "Toyota"]

2. Object.values(obj)

Bu metod, sadece değerleri bir diziye çevirir.

jsx
const degerler = Object.values(arabalar);
console.log(degerler); // [3, 5, 7]

3. Object.entries(obj)

Bu metod, her bir elemanı [anahtar, değer] şeklinde içeren iç içe dizilerden oluşan bir dizi döner.

jsx
const girdiler = Object.entries(arabalar);
console.log(girdiler);
// [["BMW", 3], ["Mercedes", 5], ["Toyota", 7]]

Object.values ile for...of Kullanarak Ortalama Hesaplamak

Object.values sayesinde değerleri diziye dönüştürebiliriz. Bu da for...of ile işlem yapmamıza olanak tanır.

Örnek: Arabaların sayılarının ortalamasını alalım.

jsx
const arabalar = {
  BMW: 3,
  Mercedes: 5,
  Toyota: 7
};

const sayilar = Object.values(arabalar); // [3, 5, 7]
let toplam = 0;

for (let adet of sayilar) {
  toplam += adet;
}

const ortalama = toplam / sayilar.length;
console.log("Ortalama araç sayısı:", ortalama);

Burada yaptığımız işlemler:

  • Object.values ile değerleri aldık.
  • for...of döngüsüyle tüm sayıları topladık.
  • Toplamı, dizi uzunluğuna bölerek ortalamayı bulduk.

Özet

Kullanım YöntemiNe Yapar?Nerede Kullanılır?
for...ofSadece iterable yapılar üzerinde dönerDizi, string, Map, Set
for...inNesnelerdeki anahtarları (key) sırayla verirObject literal yapılar
Object.keys(obj)Nesnedeki tüm key’leri bir diziye çevirirKey listesi gerektiğinde
Object.values(obj)Nesnedeki tüm değerleri bir diziye çevirirDeğerlerle işlem yapılacaksa
Object.entries(obj)[key, value] çiftlerinden oluşan bir dizi dönerAnahtar ve değer birlikte kullanıldığında

Sonuç

JavaScript'te nesneler iterable değildir, bu yüzden doğrudan for...of ile kullanılamazlar. Ancak for...in veya Object.keys, Object.values, Object.entries gibi yöntemlerle nesneler üzerinde gezinebiliriz. Bu yollarla ister sadece anahtarlarla, ister sadece değerlerle, ister her ikisiyle birlikte işlem yapabiliriz. Özellikle veri analizi, ortalama hesaplama veya veri listesi oluşturma gibi işlemlerde bu bilgiler oldukça işe yarar.

Bu temel yöntemleri öğrendiğinizde, JavaScript nesneleriyle daha güçlü ve esnek kodlar yazabilirsiniz.

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