Javascript Practice Day 4 : Iterators,Iterables ,Generators

Iterable object will have a Symbol.iterator proto .Sets,Weak Set,Maps, Weak Maps are newly introduced Javascript Iterable datatypes ."for of" is a new for loop that can be used with the itrable datatypes .Set do not store duplicate values.
reference Site -https://www.youtube.com/watch?v=TJpkYvSREtM

let mySet = new Set([1,2,2,3,4])
console.dir(mySet);


for (let v of mySet){
    console.log(v);
}


//Use of Symbol.iterator traverse through elements

let myArray=[1,2,3,4];

let iterator= myArray[Symbol.iterator]();

console.log(iterator.next()); //output {value: 1 and done :false } (value is the element present in the index and done :false,the array is not yet completed
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());


let NumArray=[1,2,3,4];

console.dir(NumArray);


//non iterable object will not have a Symbol.iterator proto

let anyOtherObject={
    name: "John",
    age: 23,
    friends :['kim','joe','jolly'],
    getname : function(){
        return this.name;
    }
}

console.dir(anyOtherObject);

Generator
They are special type of functions that are being used to generate values to be used by iterators
The generator also hold the state of the objects  .Use - thevalues are not generated on the first call , on the first iterator.next only one value is yielded and on the subsequent call .The other values are yielded , the generator fuction maintains the current state  and later uses it to generate the other stated


//generator//
function *generator(){  //or function* generator()
    yield 1;
    yield 2;
    yield 3;
    yield 4;
}

//iterator created over generator

let iterator2=generator();

console.log(iterator2.next());
console.log(iterator2.next());
console.log(iterator2.next());
console.log(iterator2.next());
console.log(iterator2.next());


A more generator with infinite numbers since yeild is called only when the iterator.next is called to generate the values so the below function will not cause a stack overflow even if the loop is called infinite times

function *infiniteGenerator()
{
    let i=0;
    
    while(true)
    {
        yield i;
        i++;
    }
}


let iterator3= infiniteGenerator();

console.log(iterator3.next());
console.log(iterator3.next());
console.log(iterator3.next());
console.log(iterator3.next());

Comments

Popular posts from this blog

Authentication and Authorization in Web API -Part1

My Gardening Journey 6