イテラブルなオブジェクトを作成してfor...of、for...inで動かす

イテラブルなオブジェクトを作成してfor...of、for...inで動かす:

JavaScriptはイテラブルであるプロトコルが存在する
反復処理プロトコル|MDN


JavaScriptのイテラブルなオブジェクトを作ってみた

  • キー(Symbol.iterator)にnext関数をもつオブジェクトを登録しておく。
  • 常にobjを参照するようにthat = thisとしておく。
  • next関数を実行するたびに要素を1つずつ進める。
  • 途中の要素の場合は{ value: val, done: false }を返す。
  • 最後の要素が来たら { done: true} を返す。
ご指摘お待ちしております。:bow_tone1:

var iterator = function () { 
  var current = 0 
  var keys = Object.keys(this) 
  var that = this // objectに登録するとthat 
  var iterator = { 
    next() { 
      if (current < keys.length) { 
        var result = { value: that[keys[current]], done: false } 
        current++; 
        return result 
      } else { 
        return { done: true } 
      } 
    } 
  } 
  return iterator 
} 
 
var obj = { a: 1, b: 2 } 
obj[Symbol.iterator] = iterator;//iterableにする 
 
for (let val of obj) { 
  console.log(val)// 1, 2 
} 
 
for (let key in obj) { 
  console.log(key)// a, b 
} 
 

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)