Custom object iterators

JavaScript metaprogramming to make an object iterable

by chortlehoort

HTML

<article id="dwarves">
  
</article>

JavaScript

const se7enDwarves = {
    employment: "Miners",
    output: "Diamonds",
    members: new Map()
}

se7enDwarves.members.set(1, "Sleepy")
se7enDwarves.members.set(2, "Grumpy")
se7enDwarves.members.set(3, "Happy")
se7enDwarves.members.set(4, "Bashful")
se7enDwarves.members.set(5, "Sneezy")
se7enDwarves.members.set(6, "Doc")
se7enDwarves.members.set(7, "Dopey")

se7enDwarves[Symbol.iterator] = function* () {
  const states = se7enDwarves.members.values()
  let state = null
  do {
    state = states.next().value
    if (typeof state !== "undefined") yield state
  } while (typeof state !== "undefined")
}

document.querySelector("#dwarves").textContent = [...se7enDwarves]