1.0.0 • Published 3 years ago
nv-array-match v1.0.0
nv-array-match
- nv-array-match
- partial order match with str/regexp/function
install
- npm install nv-array-match
usage
const {
po_all_pos,
po_all_match,
po_gen_pos,
po_gen_match,
po_is_match
} = require("nv-array-match")
example
const {
po_all_pos,
po_all_match,
po_gen_pos,
po_gen_match,
po_is_match
} = require("./index")
var data_ary = ["a","A","a","B","6","888"]
var matches = ["a",(r,i)=>r==="A"||r==="B",/[0-9]+/]
> po_all_match(data_ary,matches)
[
[ 'a', 'A', '6' ],
[ 'a', 'B', '6' ],
[ 'a', 'B', '6' ],
[ 'a', 'A', '888' ],
[ 'a', 'B', '888' ],
[ 'a', 'B', '888' ]
]
> po_all_pos(data_ary,matches)
[
[ 0, 1, 4 ],
[ 0, 3, 4 ],
[ 2, 3, 4 ],
[ 0, 1, 5 ],
[ 0, 3, 5 ],
[ 2, 3, 5 ]
]
> var g = po_gen_match(data_ary,matches)
undefined
> g.next()
{ value: [ 'a', 'A', '6' ], done: false }
> g.next()
{ value: [ 'a', 'B', '6' ], done: false }
> g.next()
{ value: [ 'a', 'B', '6' ], done: false }
> g.next()
{ value: [ 'a', 'A', '888' ], done: false }
> g.next()
{ value: [ 'a', 'B', '888' ], done: false }
> g.next()
{ value: [ 'a', 'B', '888' ], done: false }
> g.next()
{ value: undefined, done: true }
>
MATCHES
type F = (r:any,i:number)=>boolean
type SP = string | RegExp | Set | Array<any> | F
type SPS = Array<SP>
API
- ary_mch.po_all_pos(data:Array,matches:Array):Array<Array>
- ary_mch.po_all_match(data:Array,matches:Array):Array<Array>
- ary_mch.po_gen_pos(data:Array,matches:Array):Generator
- ary_mch.po_gen_match(data:Array,matches:Array):Generator
- ary_mch.po_is_match(data:Array,matches:Array):Boolean
LICENSE
- ISC
1.0.0
3 years ago