28 Şubat 2016 Pazar

Es6 iterators + for..of nedir? Nasıl kullanılır?

  Ahmet Şimşek       28 Şubat 2016 Pazar

ES6 ile javascriptte mevcut veri tiplerini daha etkin şekilde işleyecek araçlar var.

Symbol.iterator

İlerleyen yazılarda daha detaylı olarak göreceğimiz Symbol parametresinin iterator özelliğine bu yazıda değineceğiz.

const dizi      = ["elma","armut","kiraz"];
const iterator = dizi[Symbol.iterator]();

console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());

çıktı:
{ value: 'elma', done: false }
{ value: 'armut', done: false }
{ value: 'kiraz', done: false }
{ value: undefined, done: true }

dizi array ının elemanlarına dizi[0] şeklinde elemanın indisini belirterek ulaşıyorduk. Artık Symbol.iterator ile diziyi bir değişkene aktarıp elemanlarının .next fonksiyonu ile çağırılarak kullanılmasını sağlayabiliyoruz. .next fonksiyonunun her çağırılışında dizinin indis arttırılarak sonraki eleman çağırılıyor. value elemanı done ise getirilmeyen eleman kalıp kalmadığını gösteriyor.

İlk çağırılmasında aşağıdaki dönüşü;
{ value: 'elma', done: false }

Ve son çağırılmasında ise aşağıdaki dönüşü alıyoruz. Getirilecek tanımlı bir eleman olmadığı için value undefined olarak geri dönüyor.
{ value: undefined, done: true }

while döngüsü ile bir örnekle devam edelim. i değişkenine .next fonksiyonundan dönen değeri vererek geri dönülecek eleman kalmadığında done değeri true döneceğinden true dönüldüğü anda döngünün durması için break parametresini ekledik.

const dizi      = [1,2,3,4,5];
const iterator = dizi[Symbol.iterator]();

while(1){
    let i = iterator.next();
    if(i.done) break;
    console.log(i.value);
}

çıktı:
1
2
3
4
5

for..of

Javascriptte ES6 dan önce for..in ile döngüler kurulabiliyordu. Ancak for i in dizi şeklinde bir tanımlamada i dizi indisini belirttiğinden dizi[i] şeklinde bir kullanım gerekiyordu. for..of ile bu kullanıma ihtiyaç duyulmuyor.

arraylar ile kullanımı;

for(let i of  ["elma","armut","kiraz"]){
    console.log(i);
}

çıktı:
elma
armut
kiraz

stringler ile kullanımı;

for(let i of "javascript"){
    console.log(i);
}

çıktı:
j
a
v
a
s
c
r
i
p
t

objectler ile kullanımı;

for(let i of [{ _ : 1 },{ _ : 2 },{ _ : 3 }]){
    console.log(i._);
}

çıktı:
1
2
3

İlerleyen yazılarda map ve set gibi veri tiplerinde kullanımlarıda göreceğiz. Bu yazımızda Symbol.iterator ve for..of ile ilgili basit örnekler verdik. Sonraki yazımızda görüşmek üzere.
logoblog

Thanks for reading Es6 iterators + for..of nedir? Nasıl kullanılır?

Previous
« Prev Post

Hiç yorum yok:

Yorum Gönder