1.0.1 • Published 3 years ago
nv-data-named-array v1.0.1
nv-data-named-array
- nv-data-named-array is very simple util of named-array
- each element could have a key
duplicated-key permitted
install
- npm install nv-data-named-array
usage
/*
empty is a unique-special-key, means without-key, its used for internal filter
to avoid conflict with undefined
*/
const {NamedArray,empty} = require("nv-data-named-array")
var narr = new NamedArray()
narr.$push(0,'seq')
narr.$push(999,'size')
> narr
[ { '<seq@0>': 0 }, { '<size@1>': 999 } ]
>
> narr.$shift()
0
> narr
[ { '<size@0>': 999 } ]
>
narr.$insert_after(0,'https://github','url')
narr.$insert_before(0,'12345678','passwd')
> narr
[
{ '<passwd@0>': '12345678' },
{ '<url@1>': 'https://github' },
{ '<size@2>': 999 }
]
>
var narr2 = new NamedArray()
narr.$push(narr2)
> narr
[
{ '<passwd@0>': '12345678' },
{ '<url@1>': 'https://github' },
{ '<size@2>': 999 },
{ '<Symbol(empty)@3>': [] }
]
>
> narr2.$unshift('ws','protocol')
> narr
[
{ '<passwd@0>': '12345678' },
{ '<url@1>': 'https://github' },
{ '<size@2>': 999 },
{ '<Symbol(empty)@3>': [ [Object] ] }
]
>
> narr.iget(3)
{ '<Symbol(empty)@3>': [ { '<protocol@0>': 'ws' } ] }
>
> narr.$push('https://npm','url')
> narr
[
{ '<passwd@0>': '12345678' },
{ '<url@1>': 'https://github' },
{ '<size@2>': 999 },
{ '<Symbol(empty)@3>': [ [Object] ] },
{ '<url@4>': 'https://npm' }
]
>
> narr.$kget_all('url')
[ { '<url@1>': 'https://github' }, { '<url@4>': 'https://npm' } ]
>
> narr.$kget('url',1)
'https://npm'
>
> narr.named
[
{ '<passwd@0>': '12345678' },
{ '<url@1>': 'https://github' },
{ '<size@2>': 999 },
{ '<url@4>': 'https://npm' }
]
>
> narr.unnamed
[ { '<Symbol(empty)@3>': [ [Object] ] } ]
>
>
> narr.get_length_with_key('url')
2
> narr.lst
{ '<url@4>': 'https://npm' }
> narr.length
5
>
var narr = new NamedArray([['seq',100],['name','A'],['seq',200],['name','B']])
> narr
[
{ '<seq@0>': 100 },
{ '<name@1>': 'A' },
{ '<seq@2>': 200 },
{ '<name@3>': 'B' }
]
>
> narr.$filter((v,k,i)=>k==='name')
[ { '<name@1>': 'A' }, { '<name@3>': 'B' } ]
>
> narr.$map((v,k,i)=>[k+'-suffix',v])
[
{ '<100-suffix@0>': 'seq' },
{ '<A-suffix@1>': 'name' },
{ '<200-suffix@2>': 'seq' },
{ '<B-suffix@3>': 'name' }
]
>
> Array.from(narr.gen_from_fst)
[
[ 100, 'seq', 0 ],
[ 'A', 'name', 1 ],
[ 200, 'seq', 2 ],
[ 'B', 'name', 3 ]
]
> Array.from(narr.gen_from_lst)
[
[ 'B', 'name', 3 ],
[ 200, 'seq', 2 ],
[ 'A', 'name', 1 ],
[ 100, 'seq', 0 ]
]
> Array.from(narr)
[ 100, 'A', 200, 'B' ]
>
###from json
var d = { seq: 100, nest: { seq: 200, name: 'B',arr:[10,20,30] }, name: 'A' }
var narr3 = new NamedArray(d)
> narr3.$iget(1)
[
{ '<seq@0>': 200 },
{ '<name@1>': 'B' },
{ '<arr@2>': [ [Object], [Object], [Object] ] }
]
> narr3.$iget(1).$iget(2)
[ { '<0@0>': 10 }, { '<1@1>': 20 }, { '<2@2>': 30 } ]
>
###to dict
//to_dict will lose duplicated-key infomation
var narr = new NamedArray([['seq',100],['name','A']])
var narr2 = new NamedArray([['seq',200],['name','B']])
narr.$insert_after(0,narr2,'nest')
narr.$dict()
{ seq: 100, nest: { seq: 200, name: 'B' }, name: 'A' }
METHODS
narr.$filter narr.$fst_index_of narr.$iget narr.$index_of narr.$indexes_of
narr.$insert_after narr.$insert_before narr.$ipop narr.$iset narr.$kget
narr.$kget_all narr.$kset narr.$kset_all narr.$lst_index_of narr.$map
narr.$pop narr.$push narr.$shift narr.$slice narr.$splice
narr.$unshift narr.gen_from_fst narr.gen_from_lst narr.get_length_with_key
narr.length narr.lst narr.named narr.unnamed
narr.$dict
LICENSE
- ISC