KMC活動ブログ

京大マイコンクラブの活動の様子を紹介します!!

ECMAScript6勉強会 第5回

こんにちわ。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です。