◆ Array.from と [...] が便利すぎた
◆ Map や Set などはそれ自体を↑にいれて配列化できる 

ジェネレータとか keys メソッドなどのイテレータを配列化したいときに自分で for of する必要はなかったんです
var a = new Map()
a.set("a", "abc")
a.set("b", "bcd")
a.set("c", "cde")
a.set("d", "def")

var it = a.keys()
Array.from(it)
// ["a", "b", "c", "d"]

[...a.keys()]
// ["a", "b", "c", "d"]
Array.from(function*(){
for(var i=0;i<10;i++){
if(i&1) yield i
}
}())
// [1, 3, 5, 7, 9]

Array.from や [...] で配列化してくれます

注意しないといけないのは
var loopit = function*(){while(true) yield}
Array.from(loopit)
こういう無限ループするやつです

終わらないイテレータを配列化しないように注意です

ところで Map や Set はそれ自体を配列変換できます
var s = new Set()
s.add(1)
s.add(2)
console.log([...s])
// [1, 2]

var m = new Map()
m.set(1, 2)
m.set(2, 4)
console.log([...m])
// [Array[2], Array[2]]
Map の場合は entries メソッドを配列化したのと一緒です
Set の場合は values か keys メソッドを配列化したのと一緒です

Set はキーとバリューが同じ Map ともいえるので keys でも values でも同じものが取得できます
entries だと key value の配列が返って来ますが 1 つめと 2 つめの要素が一緒の配列です

Weak 版の Map や Set には一覧取得する機能はないので配列化もできません