Konuyu Değerlendir
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Javascriptte Bir Dizideki Tekrar Eden Elemanları Nasıl Ayırırız?
#1
Javascript ile programlama yaparken kullandığınız bir dizideki tekrar eden elemanları diziden çıkarmak için filter metodunu kullanırız.

Javascript ile dizilerde Filtreleme işlemi basitçe şu şekilde yapılır,

Kod:
<script type="text/javascript">
var dizi = ["Elma","Armut","Üzüm","Şeftali","Armut"];

var sonuc = dizi.filter(function(deger,sira,dizim){return dizim.indexOf(deger) == sira});

alert(sonuc);

</script>

Buradaki kodda önce bir dizi oluşturduk ve bu dizi elemanlarından bir tanesini tekrar ettirdik.
Sonra bu diziye bir filter uyguladık ve sonuc isimli bir değişkene atayıp alert ile dizinin aynı elemanları çıkarılmış halini görüntülettik.
Filtreleme işlemi için filter metodu içine basit bir fonksiyon yazdık. Bu fonksiyon 3 parametre almaktadır ve dizideki her eleman için bir kez çalıştırılmaktadır. Bu 3 parametre Javascript için filter metodunda bir standarttır. parametre isimlerini siz belirleyebilirsiniz. Biz bu örnekte filter metodunun fonksiyon parametreleri için deger, sira ve dizim isimlendirmeleri yaptık.
deger : Dizideki elemanların tek dek değerlendirilmek amacıyla yüklendiği değişkendir.
sira :  Diziden fonksiyon tarafından alınan ve karşılaştırmaya tabi tutulan değerin sıra numarasıdır.
dizim :  Fonksiyonun filtrelediği dizi için verilen geçici bir ad.

Fonksiyon tam olarak şunu yapmaktadır.

1- Önce diziden ilk elemanı alır ve deger değişkenine atar.
2- Bu elemanın indeks numarasını alır ve sira isimli değişkene atar.
3- Diziyi dizim adlı array değişkenine atar ve içinde değer değişkenine atadığımız elamanın index numarasını bulur.
4- Bu numarayı sira değişkenindeki değer ile karşılaştırır. Eğer eşit ise true, değil ise false değerini döndürür.
5- True sonucunu alan değişken filter metodu tarafından dizide tutulur. False olan değerler diziden çıkarılır.

Peki bu fonksiyon tekrar eden değerleri nasıl ayırıyor. Bu da indexOf(deger) metodunun çalışma şeklinden gelmektedir. Bu metod dizi içinde aradığı değerin bulunduğu ilk sırayı verir.
Örnekte verdiğimiz dizide tekrar eden Armut değeri için her sorgulamada onu ilk bulduğu indeks değerini yanı 1 sayısını verecektir. Armut kelimesi dizide iki tane olduğundan indexof(deger) metodumuz bu eleman için iki defa çalışacaktır. Hatırlayın fonksiyon hem değeri hem de sayıyı(sira değişkenine atıyordu) alıyordu. İlk seferinde 1 sayısını döndürecek ve fonksiyonumuz bu sayıyı sira değişkeninin değeri karşılaştırdığında true sonucunun döndürecek ve eleman dizide kalacaktır. Bundan sonra fonkisyonumuz diğer değişkenler için de çalışmaya karşılaştırmaya devam edecektir. Fonksiyon son elemana geldiğinde değer değişkenine yine Armut değerini atayacaktır. Ama bu sefer Armut'un index numarası sira=4 olacaktır. Tekrar içinde Armut kelimesi için indexOf() metodu çalıştırıldığında metodun çalışma şekli gereği yine 1 sayısını döndürecek ancak sira değişkeninin değeri 4 olduğu için eşitlik sağlanamadığından fonksiyon false değerini döndürecektir. False döndüren değerler filter metodu tarafından diziden ayıklanır. Bu şekilde tekrar eden elemanlar diziden ayıklanmış olur.
Bu dünya artık biraz daha güzel bir yer...
Bul
Alıntı


Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi