ctrl-it
A control-flow iterator. This is a extra of each. You Can break or continue when in iterating.
Last updated 3 years ago by lnsoo .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install ctrl-it 
SYNC missed versions from official npm registry.

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 (v % 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

Current Tags

  • 1.2.0                                ...           latest (3 years ago)

6 Versions

  • 1.2.0                                ...           3 years ago
  • 1.1.0                                ...           4 years ago
  • 1.0.3                                ...           4 years ago
  • 1.0.2                                ...           4 years ago
  • 1.0.1                                ...           4 years ago
  • 1.0.0                                ...           4 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 2
Last Day 1
Last Week 2
Last Month 8
Dependencies (0)
None
Dev Dependencies (3)

Copyright 2014 - 2017 © taobao.org |