Emre

WFN Üye
Konular
1,714
Mesajlar
1,810
Çözüm
0
Ticaret Puanı
0
Üyelik
9 Ay 5 Gün
Konum
Samsun
Web Sitesi
Var
Alanı
WordPress Uzm.
1/1
Konu sahibi
Bir dizideki nesneleri filtrelemek için filter() metoduna her nesne için koşul döndüren bir fonksiyon verin. Koşulu sağlayan nesneler yeni bir dizide toplanır; orijinal diziye eleman eklenmez veya diziden eleman çıkarılmaz.

Nesne özelliğine göre filtreleme​


Aşağıdaki varsayımsal örneği tarayıcınızın geliştirici konsolunda veya JavaScript çalıştırabildiğiniz bir ortamda çalıştırın. Dizideki ürünlerden yalnızca stokta olan ve fiyatı 500'den düşük olanlar seçilir:

JavaScript:
const urunler = [
  { ad: "Klavye", fiyat: 450, stokta: true },
  { ad: "Fare", fiyat: 300, stokta: false },
  { ad: "Monitör", fiyat: 4000, stokta: true }
];

const sonuc = urunler.filter(urun =>
  urun.stokta === true && urun.fiyat < 500
);

console.log(sonuc);
// [{ ad: "Klavye", fiyat: 450, stokta: true }]

filter(), fonksiyonu dizideki her eleman için çalıştırır. Fonksiyonun sonucu doğru olarak değerlendiriliyorsa ilgili eleman yeni diziye alınır. Burada && iki koşulun da sağlanmasını gerektirir: Fare stokta olmadığı, monitör ise fiyat sınırını aştığı için sonuca girmez.

Kendi verilerinize uygularken urunler yerine dizinizi, stokta ve fiyat yerine nesnelerinizdeki özellik adlarını yazın. En az bir koşulun sağlanması yeterliyse && yerine || kullanabilirsiniz.

Boş sonuç ve veri türleri​


Hiçbir nesne koşulu sağlamazsa sonuç [] olur. Bu, dizinin boş olduğunu değil, o koşula uyan eleman bulunmadığını gösterir. Beklenmedik bir boş sonuçta özellik adlarını, karşılaştırılan değerleri ve veri türlerini kontrol edin. Örneğin urun.stokta === true, değeri true yerine "true" olan bir nesneyi eşleştirmez. Gelen verinin türünü doğrulayıp koşulu gerçek veriye göre düzeltin.

Metin karşılaştırmasında büyük ve küçük harf farkını göz ardı etmek isterseniz, metin olduğu bilinen bir özellik üzerinde urun.ad.toLowerCase().includes("klavye") gibi bir koşul kullanabilirsiniz. Özellik eksik veya metin dışında bir değerse önce veriyi doğrulayın ya da uygun bir varsayılan değer belirleyin.

Filtrelenen nesneleri değiştirirken dikkat​


Yeni dizi oluşturulsa da içindeki nesneler kopyalanmaz. Örnekte sonuc[0].fiyat = 400 yazmak, orijinal dizideki aynı nesnenin fiyatını da değiştirir. Bağımsız üst düzey nesneler üzerinde çalışmak için filtrelemenin ardından kopyalayabilirsiniz:

JavaScript:
const kopyalar = urunler
  .filter(urun => urun.stokta === true)
  .map(urun => ({ ...urun }));

Bu işlem yalnızca yüzeysel kopya oluşturur; nesnelerin içindeki başka nesneler varsa onlar hâlâ ortak referans olabilir.

Sık sorulan sorular​

Yalnızca ilk eşleşen nesneyi nasıl alabilirim?​

filter() her zaman bir dizi döndürür. İlk eşleşen nesnenin kendisini almak için aynı koşulla urunler.find(urun => urun.stokta === true) kullanın. Eşleşme yoksa sonuç undefined olur.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic