Javascript

Javascript Dizi İçerisinde Arama

Herkese merhabalar, Javascript derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde dizi içerisinde arama yapmayı anlatacağım. Hadi başlayalım !

Javascript’te dizi içerisindeki elemanlara indis numarası vererek ulaşıyoruz fakat istediğimiz elemanın nerede olduğunu yani indis numarasını bilmiyorsak, dizi içerisinde arama yaparak bulabiliriz.
Tabi Javascript gibi komplike ve alternatifi bol olan bir dilde dizi içerisinde arama yapmanında birden çok yolu var 🙂
Birden çok yolu var elbette ama ben 4 tanesinden bahsedeceğim.

Birincisi find() fonksiyonunu kullanmak. Bu fonksiyon ile doğrudan istediğimiz elemanı dizi içerisinden bulabiliriz. Fonksiyonu predicate fonksiyon olarak kullanıyoruz ve aranan veri dizi içerisinde varsa verinin kendisini, yoksa -1 döndürüyor.
Bilmeyenler için predicate fonksiyondan biraz bahsedecek olursak; fonksiyon içerisinde fonksiyon gibi kullanılan fonksiyonlardır. Yani örneğin find() fonksiyonunun kullanımı şu şekilde olacaktır;
var kullanici = dizi.find(x => x.kullaniciAdi == 'suforce');
Bu örnekte kullandığımız x => x.kullaniciAdi == ‘suforce’ kısmı bir predicate fonksiyondur. Dizi içerisindeki tüm veriler sırasıyla x değişkenine atanır ve her x değerinin kullaniciAdi özelliğinin suforce olup olmadığı kontrol edilir. Yani bir nevi döngü yapısı kullanılmakta.
find() fonksiyonu bulduğu ilk değeri geriye döndürür. Yani aynı veriden dizi içerisinde birden fazla kez varsa ilk bulunan veriyi geri döndürür, sonraki verileri kontrol dahi etmez.

İkinci yol findIndex() fonksiyonunu kullanmak. Bu fonksiyon tıpkı find() fonksiyonu gibi predicate şekilde kullanılır fakat find() fonksiyonundan farklı olarak aranan veri dizi içerisinde varsa bulunduğu index numarasını geri döndürür, yani sayısal bir dönüş yapar. Aranan veri dizi içerisinde yoksa da -1 döndürür. Ve yine find() fonksiyonu gibi aranan veri birden fazla kez dizi içerisinde varsa ilk bulduğu değerin index numarasını geri döndürüp kalan verileri kontrol dahi etmez. Örnek kullanımı ise şöyle olacaktır;
var kullaniciIndex = dizi.findIndex(x => x.kullaniciAdi == 'suforce');
Üçüncü yolumuz indexOf() fonksiyonunu kullanmak. Bu fonksiyon tıpkı findIndex() fonksiyonu gibi aranan verinin index numarasını geri döndürür fakat kullanımı predicate şeklinde değil, doğrudan aranan veriyi parametre olarak göndermektir. Yani örneğin bundan önceki 2 yöntemimizde x.kullaniciAdi == ‘suforce’ şeklinde kullanıyorduk ya, indexOf() fonksiyonunda aranan veriyi doğrudan parametre olarak göndermemiz gerekiyor.
Fakat obje tutan dizilerde arama yapmak istediğimizde yine predicate şeklinde kullanmamız gerekecek. Arama dizinin solundan başlanarak yapılır ve aranan veri bulunursa index numarasıda soldan verilir. Yani diziye ilk eklenen veriden son eklenen veriye doğru arama yapılıyor ve aranan verinin index numarasıda sıfırdan başlanarak tespit ediliyor.
Aranan veri dizi içerisinde yoksa -1 değeri geri döndürülmekte.
Örneğin elemanları [1, 2, 3, 4, 5] olan bir dizi içerisinden 5 verisinin index numarasını arayalım. Ayrıca diğer 2 yöntemde verdiğimiz örnekleride yapalım.
var sayiDizisi = [1, 2, 3, 4, 5];
var indexNumarasi = sayiDizisi.indexOf(5);
var index = dizi.indexOf(x => x.kullaniciAdi == 'suforce');
alert('5 Elemanının Index Numarası: ' + indexNumarasi);
alert('Kullanıcı Adı suforce Olan Verinin Index Numarası: ' + index);
Dördüncü yolumuz kendi fonksiyonumuzu yazmak 🙂 Kendi fonksiyonumuzu yazmak kulağa biraz korkutucu gibi gelsede aslında basit bir yapısı var.
Dizinin ilk elemanından sonra elemanına doğru sırayla gidecek ve her elemanın aradığımız veri olup olmadığını kontrol edeceğiz ve aradığımız veriyi bulursak arama işlemini tamamlayacağız. Bulamazsakta bulamadığımızı bildireceğiz.
Tabi tüm elemanları sırayla gezmek için döngü kullanacağız ve burada ister for, istersek for-in istersekte for-of döngüsü kullanabiliriz fakat ben for döngüsü kullanacağım çünkü for döngüsünde index gezmek için kullanılan i değişkenine aradığımız veriyi bulmamız halinde ihtiyacımız olacak 🙂
Kodunu yazarsam daha açıklayıcı olur sanırım.
function diziIcindeAramaYap(dizi, aranan)
{
    for(var i = 0; i < dizi.length; i++)
        if(dizi[i] == aranan)
            return i;
    return -1;
}
Evet dizi içerisinde arama yapmak işte bu kadar kolay 🙂
Tüm Javascript derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.
Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 0 Ortalama: 0]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu