ctrl-it

    1.2.0 • Public • Published

    build-status

    ctrl-it

    ==== A control-flow iterator. This is a extra of each. You Can break or continue when in iterating.

    Installation

    $ npm install ctrl-it

    Example

    var it = require('ctrl-it');
     
    var obj = {
        a: 'A',
        b: 'B',
        c: 'C'
    }
     
    obj.__proto__ = {
        'd': 'D',
        'e': 'E'
    };
     
    // itrate all prop of obj and array:
    // common one:
     
    var result = '';
    it.any(obj, function(k, v){
        result += k;
        result += v;
    });
    // beacuse it has  __proto__ so result is:
    // result == aAbBcCdDeE''
     
    // generator one is: 
    var result = '';
    yield it.some(obj, function *(k, v){
        result += k;
        result += v;
        // run some generator codes
    });
     
    // async/await one is:
    var result = '';
    await it.total(obj,  async (k, v) => {
        result += k;
        result += v;
        // run some async/await codes
    });
    // beacuse it has  __proto__ so result is:
    // result == aAbBcCdDeE''
     
    // flow control, you can 'break' by return true
    // common one:
    var arr = [1, 2, 3, 4, 5, 6];
     
    var result = '';
    var count = 0;
    it.each(arr, function(i, v){
        result += v;
        count ++;
        if (count >= 3) {
            return true; // 'return true' makes this iterator break;
        }
    });
    // beacuse of 'return true' breaking the iterator, resule is '123'
     
     
    // generator one:
    var result = '';
    var count = 0;
    yield it.every(arr, function* (i, v){
         result += v;
         count ++;
         if (count >= 3) {
             return true; // 'return true' makes this iterator break;
         }
     });
     
     // async/await one:
    var result = '';
    var count = 0;
    yield it.all(arr, async (i, v) => {
         result += v;
         count ++;
         if (count >= 3) {
             return true; // 'return true' makes this iterator break;
         }
     });
     // beacuse of 'return true' breaking the iterator, resule is '123
     
     // filter support
     // if 'filter' function not defined or return true, the 'iterator' function will receiver k, v pair.
     
     var obj = {
         a: 'A',
         b: 'B',
         c: 'C',
         e: 'E',
         f: 'F'
     }
     
     var result = '';
     it.each(obj, function iterator(k, v){
        result += k;
        result += v;
     }, function filter(k, v) {
        return 'k' === 'a' || 'k' === 'c'
     })
     
     // result === 'AC'
     
     var arr = [1,2,3,4,5,6,7]
     
     var result = '';
     yield it.every(arr, function* iterator(k, v) {
         result += k;
         result += v;
     }, function* filter(k, v) {
         return (% 2) === 0;
    });
     
    // result === '123456'
     
    // The filter all supported by it.any and it.some
     

    API

    • it.any(obj, function it(key, value){...})

      iterate all values of a object/array, even the hasOwnProperty function returns false

    • it.some(obj, function* it(key, value){...})

      the generator type function of it.any

    • it.total(obj, async function it(key, value){...})

      the async/await type function of it.any

    • it.each(obj, function it(key, value){...})

      just iterate the values of a object/array the hasOwnProperty function returns true

    • it.every(obj, function* it(key, value){...})

      the generator type function of it.each

    • it.all(obj, async function it(key, value){...})

      the async/await type function of it.each

    • flow control

      if the iterator-callback function return true, the iterator will be breaked.

    Authors

    License

    Install

    npm i ctrl-it

    DownloadsWeekly Downloads

    1

    Version

    1.2.0

    License

    MIT

    Last publish

    Collaborators

    • lnsoo