1.0.1 • Published 5 years ago
nv-array-nonest-visitor v1.0.1
nv-array-nonest-visitor
- nv-array-nonest-visitor
 
install
- npm install nv-array-nonest-visitor
 
usage
const ary_nonest_visitor = require("nv-array-nonest-visitor")example
visit
var arr = [10,20,30,40,50,60]
ary_nonest_visitor.visit(
    arr,
    (v,i,visitor) =>{
        if(i%5===0) {
            visitor.remove()    //10,60 removed
        } else if(i%5 ===1) {
            visitor.insert_before('before-'+v)  //insert Before 20
        } else if(i%5 ===2) {
            visitor.insert_after('after-'+v)    //insert After 30
        } else if(i%5 ===3){
            visitor.replace('replace-'+v)       //replace 40
        } else {
            //no touch 50, visitor.skip()  have no effect on visit
        }
    }
)
arr
[ 'before-20', 20, 30, 'after-30', 'replace-40', 50 ]gen
var arr = [10,20,30,40,50,60]
var g = ary_nonest_visitor.gen(
    arr,
    (v,i,visitor) =>{
        if(i%5===0) {
            visitor.remove()
        } else if(i%5 ===1) {
            visitor.insert_before('before-'+v)
        } else if(i%5 ===2) {
            visitor.insert_after('after-'+v)
        } else if(i%5 ===3){
            visitor.replace('replace-'+v)
        } else {
            //no touch 50
        }
    }
)
> Array.from(g)
[ 'before-20', 20, 30, 'after-30', 'replace-40', 50 ]
>
> arr
[ 'before-20', 20, 30, 'after-30', 'replace-40', 50 ]
>skip
var arr = [10,20,30,40,50,60]
var g = ary_nonest_visitor.gen(
    arr,
    (v,i,visitor) =>{
        if(i%5===0) {
            visitor.remove()
        } else if(i%5 ===1) {
            visitor.insert_before('before-'+v)
        } else if(i%5 ===2) {
            visitor.insert_after('after-'+v)
        } else if(i%5 ===3){
            visitor.replace('replace-'+v)
        } else {
            visitor.skip() //skip 50, but not modify original array
        }
    }
)
> Array.from(g)
[ 'before-20', 20, 30, 'after-30', 'replace-40' ]
>
> arr
[ 'before-20', 20, 30, 'after-30', 'replace-40', 50 ]
>ACTION
> ary_nonest_visitor.ACTION_DICT
{
  skip: 'visitor.skip()',                        //affect generator, but no touch original-array
  remove: 'visitor.remove()',                    
  replace: 'visitor.replace(new_value)',
  insert_before: 'visitor.insert_before(val)',
  insert_after: 'visitor.insert_after(val)'
}
>API
- ary_nonest_visitor.visit(arr,(v,i,visitor) =>{/.../})
 - ary_nonest_visitor.gen(arr,(v,i,visitor) =>{/.../})
 
LICENSE
- ISC