Emre

WFN Üye
Konular
1,647
Mesajlar
1,743
Çözüm
0
Ticaret Puanı
0
Üyelik
9 Ay 3 Gün
Konum
Samsun
Web Sitesi
Var
Alanı
WordPress Uzm.
1/1
Konu sahibi
İçeriği verilen koşula uyan ilk nesneyi bulmak için find() kullanın. Dizi içinde örneğin id değeri 2 olan nesneyi aramak istiyorsanız koşulu bir geri çağırım işleviyle belirtin; eşleşme varsa nesne, yoksa undefined döner.

JavaScript:
const kullanicilar = [
  { id: 1, ad: "Ayşe", rol: "editör" },
  { id: 2, ad: "Mehmet", rol: "yazar" },
  { id: 3, ad: "Zeynep", rol: "yönetici" }
];

const kullanici = kullanicilar.find(kisi => kisi.id === 2);

console.log(kullanici);
// { id: 2, ad: "Mehmet", rol: "yazar" }

Burada find(), dizinin elemanlarını sırayla kontrol eder. kisi.id === 2 koşulunu sağlayan ilk eleman bulunduğunda aramayı durdurur ve o nesnenin tamamını döndürür. Koşulu sağlayan hiçbir nesne yoksa sonuç undefined olur.

Koşula göre nesne bulma​


find() içindeki işlev, her nesne için çalıştırılır. Nesnenin birden fazla özelliğini karşılaştırabilir veya metin üzerinde başka bir koşul uygulayabilirsiniz:

JavaScript:
const urunler = [
  { kod: "A01", ad: "Klavye", stok: 4 },
  { kod: "B02", ad: "Fare", stok: 0 },
  { kod: "C03", ad: "Kulaklık", stok: 8 }
];

const stoktaOlan = urunler.find(urun => urun.stok > 0);

console.log(stoktaOlan);
// { kod: "A01", ad: "Klavye", stok: 4 }

Bu örnekte birden fazla ürünün stoğu pozitif olsa bile yalnızca ilk uygun ürün döner. find(), tüm eşleşmeleri değil, ilk eşleşen nesneyi bulur. Tüm uygun nesneleri almak istiyorsanız filter() kullanmanız gerekir:

JavaScript:
const stoktakiUrunler = urunler.filter(urun => urun.stok > 0);

console.log(stoktakiUrunler);
// [
//   { kod: "A01", ad: "Klavye", stok: 4 },
//   { kod: "C03", ad: "Kulaklık", stok: 8 }
// ]

Aradığınız nesnenin gerçekten bulunduğunu kullanmadan önce kontrol edin. Eşleşme yoksa dönen değer undefined olacağı için doğrudan özellik okumaya çalışmak hata oluşturabilir.

JavaScript:
const sonuc = kullanicilar.find(kisi => kisi.id === 8);

if (sonuc) {
  console.log(sonuc.ad);
} else {
  console.log("Kullanıcı bulunamadı.");
}

Bu kontrol, aranan id değerine sahip nesnenin bulunamadığını gösterir. Ancak bu durum dizinin bozuk olduğunu kanıtlamaz; aranan kayıt gerçekten mevcut olmayabilir veya karşılaştırmada kullanılan özellik adı ya da veri türü yanlış olabilir.

find(), findIndex() ve some() arasındaki fark​


Hangi yöntemi kullanacağınız, nesnenin kendisine mi, konumuna mı yoksa yalnızca eşleşme bilgisine mi ihtiyaç duyduğunuza bağlıdır.
YöntemDönen değerNe zaman kullanılır?
find()İlk eşleşen nesne veya undefinedNesnenin özelliklerini kullanmanız gerektiğinde
findIndex()İlk eşleşen nesnenin dizin numarası veya -1Nesneyi dizindeki konumundan değiştirmek ya da silmek istediğinizde
some()true veya falseEn az bir eşleşme olup olmadığını bilmek istediğinizde
filter()Eşleşen nesnelerden oluşan yeni diziTüm eşleşmeleri almak istediğinizde
Örneğin yalnızca belirli bir kullanıcının var olup olmadığını kontrol etmek için nesnenin tamamını almanız gerekmez:

JavaScript:
const yoneticiVarMi = kullanicilar.some(kisi => kisi.rol === "yönetici");

console.log(yoneticiVarMi); // true

Bir nesneyi güncellemek için önce konumunu bulmanız gerekiyorsa findIndex() kullanabilirsiniz:

JavaScript:
const index = kullanicilar.findIndex(kisi => kisi.id === 2);

if (index !== -1) {
  kullanicilar[index].rol = "editör";
}

findIndex() sonucu -1 ise eşleşen nesne yoktur. Bu kontrolü yapmadan dizi[index] üzerinde işlem yapmak, yanlış elemana erişmenize veya beklenmeyen bir sonuç üretmenize neden olabilir.

Sayı ve metin karşılaştırmasında dikkat edilmesi gerekenler​


Arama koşulunda genellikle kesin eşitlik olan === kullanın. Özellikle dış kaynaktan gelen verilerde id değeri sayı yerine metin olarak bulunabilir. Örneğin 2 === "2" sonucu false olur.

JavaScript:
const kayitlar = [
  { id: "2", ad: "Mehmet" }
];

const bulunan = kayitlar.find(kayit => kayit.id === "2");
console.log(bulunan); // { id: "2", ad: "Mehmet" }

Arama yapmadan önce verideki özelliğin adını ve türünü kontrol edin. Veri sayısal olarak kullanılacaksa karşılaştırmadan önce kontrollü biçimde sayıya dönüştürülebilir; ancak bu dönüşüm, geçersiz metinlerin yanlışlıkla eşleşmesine yol açmayacak şekilde yapılmalıdır.

Sonuç olarak, nesnenin kendisini bulmak için find(), tüm eşleşmeleri almak için filter(), dizinini bulmak için findIndex(), yalnızca eşleşme durumunu öğrenmek için some() kullanın. Arama sonrasında dönen değeri kontrol ederek nesne bulunamadığında uygulamanın hangi işlemi yapacağını ayrıca belirleyin.
 

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