1.0.1 • Published 3 years ago

nv-data-named-array v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

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