こんにちわ。KMC3回生の id:tyage です。
前回に引き続き6/30にECMAScript6勉強会 第5回を行いました。
第5回
第5回では Array.from, Set, WeakSet, Array comprehensions, String.prototype.repeat を読みました。
Array.from
オブジェクトから配列を作るメソッドが追加されたようです。
DOMのNodeListとかargumentsとかを配列化するのに便利なのではないでしょうか。
Array.from({ 1: "a", 2: "b", length: 2 })
iterableなオブジェクトの場合はiterateして配列を生成、それ以外のオブジェクトの場合はlengthを参照して配列を生成しているようです。
Set, WeakSet
Setはuniqueな値の集合です。
配列とは違い、同じ値を複数入れても無視されます。
new Set([1, 2, 1, 2, 1]) // => Set [ 1, 2 ]
Set, WeakSetの対応は、第4回でやったMap, WeakMapを参考にしてもらえるとよいと思います。
WeakSetはWeakMap同様にオブジェクトしか格納できず、メソッドはhas, add, delete, clearが用意されています。
Array comprehensions
配列内包が追加されました。
pythonのリスト内包表記を彷彿とさせます。
配列の初期値を便利に生成できます。
[for (b of [1, 2, 3]) for (a of [1, 2, 3]) if (b < 3) a * b] // => [ 1, 2, 3, 2, 4, 6 ]
for of文とif文が使えるようです。(ただし、if文単体では使えないようです)
for of文ごとにforEnvというlexical environmentが生成され、次のfor of文のforEnvに継承されるようです。
for ofの束縛変数はforEnv内で作成されるため、配列内法の外側からは参照できないようです。
String.prototype.repeat
文字列を引数で渡した回数だけ繰り返したものが返ってきます。
便利なので割と使っています。
'hoge'.repeat(3) // => 'hogehogehoge'
次回(第6回)は7/14です。