Iterators & Generators

Iterator Example

// Iterator Example
function nameIterator(names) {
    let nextIndex = 0;

    return {
        next: function () {
            return nextIndex < names.length ? 
            { value: names[nextIndex++], done: false } :
            { done: true }
        }
    }
}

// Create an array of names
const namesArr = ['Jack', 'Jill', 'John'];

// Initialize iterators and pass in the names array
const names = nameIterator(namesArr);

console.log(names.next().value);
console.log(names.next().value);
console.log(names.next().value);

Generator Example

// Generator Exmaple

function* sayNames() {
    yield 'Jack';
    yield 'Jill';
    yield 'John';
}

const name = sayNames();

console.log(name.next().value);
console.log(name.next().value);
console.log(name.next().value);

Create ID

// ID Creator

function* createIds() {
    let index = 0;

    while(true){
        yield index++;
    }
}

const gen = createIds();

console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value);
Was this page helpful?