Javascript de bir dizi içinde basit bir şekilde arama işlemi

Image for post
Image for post

Dizide bir eleman arama Javascript de en fazla yapılan dizi işlemlerindendir. Şimdi öncelikle bir dizide arama yapmak için kullanılan birkaç fonksiyonu inceleyelim.

Dizi İçerisinde Arama İşlemi

Javascript de bu işlemi yapmak için çok fazla yöntem vardır.

Javascript de diziler için kullanılan popüler fonksiyonlar
Javascript de diziler için kullanılan popüler fonksiyonlar

Ancak ben kullanımı yaygın olan 2 fonksiyon üzerinden anlatacağım.

Arama yapmak için iki farklı örnek üzerinden gidelim ve fonksiyonların ne tür farkları var bunu örnekler üzerinden görelim.

Öncelikle kullanacağımız fonksiyonlarımız aşağıdaki gibidir.

find,indexOf

Örnek 1
Elinizde alışveriş listesi olsun ve markete gittiniz. Alışverişinizi yaparken eşiniz aradı ve dedi ki “Canım ben listeye portakal yazmış mıyım?”. Sizde listeye bakıp varsa evet yoksa hayır diyorsunuz. Şimdi gelin bunu kod ile yapalım.

indexOf

var dizi  = [‘elma’,’armut’,’portakal’];  // Alışveriş listemiz
var sonuc = dizi.indexOf(‘portakal’); // Sonuç = 2

indexOf kullanarak dizi içerisinde belli bir değere göre (bu string,int vb. olabilir) arama yaptık. Eğer dizide bu değer mevcutsa bize sonuç olarak dizideki sırası dönecektir. Eğer yoksa -1 dönecektir.

find

var dizi  = ['elma','armut','portakal'];
var sonuc = dizi.find(s=>s=='portakal'); // Sonuç = portakal

find kullanarak dizi içerisinde belli bir değere göre (bu string,int vb. olabilir) arama yaptık. Eğer dizide bu değer mevcutsa bize sonuç olarak elamanın kendisi dönecektir. Eğer yoksa undefined dönecektir.

Yani yukarıdaki örnekte sonuçlara göre portakal listemizde olduğu için eşinize “evet hayatım” diyerek cevap verebilirsiniz.

Şimdi gelelim bu iki fonksiyonun farkına;

Dizi deki elemanlar string,int vb. tiplerden oluşuyorsa ikisini de kullanabilirsiniz bu size kalmış bir durum anacak dizideki elemanlar objelerden (object) oluşuyorsa bu durumda indexOf u kullanamazsınız.Çünkü indexOf sadece direk dizi içerisinde var mı yok mu diye bakarken find tüm diziyi bir foreach e sokup tek tek bakıyor. Örnek üzerinden gösterelim.

Örnek 2
Sınav sonuçlarının olduğu bir liste olduğunu düşünelim ve biz belli bir kişinin sınavdan kaç aldığını öğrenmek istiyorum

var dizi = [
{isim:"Soner", not:65},
{isim:"Kadir", not:64},
{isim:"Ali", not:70},
{isim:"Kağan", not:20}
];

Bu şekilde eğer ismi Soner olan bir öğrenci varsa bize bilgileri gelecektir. Bakalım sonuç olarak ne gelecek.

Image for post
Image for post

Soner isimli bir öğrenci varmış ve bize öğrencinin bilgileri sonuç olarak döndü.

Written by

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store