javascript:iterator
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン | |||
javascript:iterator [2014/01/08 07:50] – [Iterableオブジェクト] nullpon | javascript:iterator [2015/10/24 04:28] (現在) – 削除 nullpon | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== Iterator ====== | ||
- | Iterator(イテレータ)は[[javascript: | ||
- | ===== IterableとIterator ===== | ||
- | Array、NodeList、Set、Map等はIterableである。Iterableなオブジェクトはfor-of文で反復処理を行う事が出来る。 | ||
- | |||
- | <code javascript> | ||
- | for (let i of [" | ||
- | console.log(i); | ||
- | } | ||
- | </ | ||
- | |||
- | iteratorメソッドを実装している集合オブジェクトがIterable。iteratorメソッドはiteratorオブジェクトを返す。 | ||
- | |||
- | <code javascript> | ||
- | console.log([1, | ||
- | </ | ||
- | |||
- | nextメソッドを実装しているオブジェクトがIterator。nextメソッドは反復処理でIterableの次の要素を取り出す。 | ||
- | |||
- | <code javascript> | ||
- | console.log([1, | ||
- | </ | ||
- | |||
- | ===== 独自のIteratorを実装 ===== | ||
- | オブジェクトの値を繰り返し取得するイテレータを実装する | ||
- | |||
- | <code javascript> | ||
- | function values(obj) { | ||
- | var i = 0; | ||
- | var keys = Object.keys(obj); | ||
- | return { | ||
- | iterator: function() { | ||
- | return this; | ||
- | }, | ||
- | next: function() { | ||
- | if (i < keys.length) { | ||
- | return { value: obj[keys[i++]] }; | ||
- | } else { | ||
- | return { done: true }; | ||
- | } | ||
- | } | ||
- | } | ||
- | } | ||
- | |||
- | var obj = {a:1, b:2}; | ||
- | for (let i of values(obj)) { | ||
- | console.log(i); | ||
- | } | ||
- | </ |
javascript/iterator.1389167430.txt.gz · 最終更新: 2014/01/08 07:50 by nullpon