JavaScript Iterator Class

后端 未结 7 1361
挽巷
挽巷 2020-12-29 07:55

Do you know a JavaScript library that implements a generic Iterator class for collections (be it Arrays or some abstract Enumerable) with a full set of features, like the Go

7条回答
  •  滥情空心
    2020-12-29 08:02

    In the time since this question was asked JavaScript has added actual Iterators. Some built-in types, such as Array, Map, and String now have a default iteration behavior, but you can add your own to any object by including a next() function which returns one of two objects:

    {done:true}     /*or*/
    {done:false, value:SOMEVALUE}
    

    One way to access an object Iterator is with the:

    for ( var of object ) { }
    

    loop. Here is a (reasonably silly) example where we define an Iterator and then use it in such a loop to produce a string 1, 2, 3:

    "use strict";
    
    function count ( i ) {
      let n = 0;
      let I = {};
      I[Symbol.iterator] = function() {
         return { next: function() { return (n > i) ? {done:true}
                                                    : {done:false, value:n++} } } };
      let s = "";
      let c = "";
      for ( let i of I ) {       /* use the iterator we defined above */
          s += c + i;
          c = ", "
      }
      return s;
    }
    
    
    let s = count(3);
    console.log(s);
    

提交回复
热议问题