ecmascript:iterator
Iterator
Iterator(イテレータ)はes6で導入された集合オブジェクトに対して反復処理を行うオブジェクト。
IterableとIterator
Array、NodeList、Set、Map等はIterableである。Iterableなオブジェクトはfor-of文で反復処理を行う事が出来る。
for (let i of ["a", "b", "c"]) { console.log(i); // => "a", "b", "c" }
iteratorメソッドを実装している集合オブジェクトがIterable。iteratorメソッドはiteratorオブジェクトを返す。
console.log([1,2,3].iterator); // => function iterator() { }
nextメソッドを実装しているオブジェクトがIterator。nextメソッドは反復処理でIterableの次の要素を取り出す。
console.log([1,2,3].iterator().next); // => function next() { }
独自のIteratorを実装
オブジェクトの値を繰り返し取得するイテレータを実装する
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); // => 1, 2 }
ecmascript/iterator.txt · 最終更新: 2015/10/24 04:29 by nullpon