◆ Map も Set も登録した順に処理をすることができる
◆ Set は値がユニークになるので配列の unique が簡単にできる 

Map や Set というと順番は保持していなそうです
特に Set の「集合」というと 同じものは 1 つだけで 順番が存在しないのが特徴だと思います

ですが JavaScript では Set も Map も順番を保持しています


ぐぐってみると ECMA の仕様にこんな文章がありました
Map/Set の forEach のところの説明です
Repeat for each e that is an element of entries, in original insertion order
追加した順だそうです


コレを利用すればユニークが簡単にできそうです
Array.prototype.unique = function(){
var set = new Set()
this.forEach(e => set.add(e))
var arr = []
set.forEach(e => arr.push(e))
return arr
}

もっと短く
Array.prototype.unique = function(){
return Array.from(new Set(this))
}


JavaScript のオブジェクトは 実際にはどのブラウザでも登録順に取り出せるので 実質順番ありになってますが 一応仕様的には順番があることにはなってないそうです
順番ありにしてしまえばいいのにと思うのですが そこは変えずに順番が必要なら Map を使えってことみたいです

Map はともかく Set に順番があるのはちょっと以外でした