nvpair

nvpair =================== - k,v pair-list - for duplicate key supported

Usage no npm install needed!

<script type="module">
  import nvpair from 'https://cdn.skypack.dev/nvpair';
</script>

README

nvpair

  • k,v pair-list
  • for duplicate key supported

install

  • npm install nvpair

usage

const nvpair = require("nvpair")

const Tlist = nvpair.Tlist;


var tl = [ 
    [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], 
    [ 'mmm', 'a' ], [ 1, 'b' ],['t','c'],
    [ 0, 'a' ]
]
var TL0 = new nvpair.Tlist(tl)

> TL0
{
    0 : "a" ,
    1 : "b" ,
    2 : "c" ,
    "mmm" : "a" ,
    1 : "b" ,
    "t" : "c" ,
    0 : "a"
}

>


> var TL0 = new nvpair.Tlist(tl)
> TL0.$_[0]
'a'
> TL0.$_.mmm
'a'
> TL0.$_.t
'c'
>

> TL0.$_.mmm = 'AAAA'
'AAAA'
>
> TL0
{
    0 : "a" ,
    1 : "b" ,
    2 : "c" ,
    "mmm" : "AAAA" ,
    1 : "b" ,
    "t" : "c" ,
    0 : "a"
}

>


delete TL0.$_.t

> TL0
{
    0 : "a" ,
    1 : "b" ,
    2 : "c" ,
    "mmm" : "AAAA" ,
    1 : "b" ,
    0 : "a"
}

>

funcs

is_pair

    > nvpair.is_pair([100,200])
    true
    > nvpair.is_pair([100])
    false
    > nvpair.is_pair([100,200,300])
    false

is_dele

    > nvpair.is_dele({a:100})
    true
    > nvpair.is_dele({})
    false
    >
    > nvpair.is_dele({a:100,b:200})
    false
    >

t2dele

    > nvpair.t2dele(['a',100])
    { a: 100 }
    >

dele2t

    > nvpair.dele2t({ a: 100 })
    [ 'a', 100 ]
    >

swaplr

    > var pair = [1,2]
    undefined
    > nvpair.pair_swaplr(pair)
    [ 2, 1 ]
    >
    > pair
    [ 2, 1 ]
    >
    > var dele = {a:100}
    undefined
    > nvpair.dele_swaplr(dele)
    { '100': 'a' }
    >
    > dele
    { '100': 'a' }
    >

is_tl

    > nvpair.is_tl([[1,2],[3,4],[5,6]])
    true
    > nvpair.is_tl([])
    true
    >

tl_swaplr

    > nvpair.tl_swaplr([['a',100],['b',200]])
    [ [ 100, 'a' ], [ 200, 'b' ] ]
    >

is_dl

    > nvpair.is_dl([])
    true
    > nvpair.is_dl([{a:100},{b:200}])
    true
    >

l2tl

    > nvpair.l2tl([])
    []
    >
    > nvpair.l2tl([1,2,3])
    [ [ 1, 2 ] ]
    >
    > nvpair.l2tl([1,2,3,4])
    [ [ 1, 2 ], [ 3, 4 ] ]
    >

tl2l

   > nvpair.tl2l([ [ 1, 2 ], [ 3, 4 ] ])
   [ 1, 2, 3, 4 ]
   >

d2tl

    > nvpair.d2tl({a:100,b:200,c:300})
    [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    >

tl2d

    > nvpair.tl2d([ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ])
    { a: 100, b: 200, c: 300 }
    >

dl2tl

    > nvpair.dl2tl([ { a: 100 }, { b: 200 }, { c: 300 } ])
    [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    >

tl2dl

    > nvpair.tl2dl([ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ])
    [ { a: 100 }, { b: 200 }, { c: 300 } ]
    >

fmt_kvl

    > nvpair.fmt_kvl(['a','b','c'],[100,200,300])
    [ [ 'a', 'b', 'c' ], [ 100, 200, 300 ] ]
    >
    > nvpair.fmt_kvl(['a','b','c'],[100,200])
    [ [ 'a', 'b' ], [ 100, 200 ] ]
    >
    > nvpair.fmt_kvl(['a','b'],[100,200,300])
    [ [ 'a', 'b' ], [ 100, 200 ] ]
    >

tl2kvl

    > var [kl,vl] = nvpair.tl2kvl([ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ])
    
    > kl
    [ 'a', 'b', 'c' ]
    > vl
    [ 100, 200, 300 ]
    >

kvl2tl

    > nvpair.kvl2tl([ 'a', 'b', 'c' ],[ 100, 200, 300 ])
    [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    >
    > nvpair.kvl2tl([ 'a', 'b', 'c' ],[ 100, 200])
    [ [ 'a', 100 ], [ 'b', 200 ] ]
    >
    > nvpair.kvl2tl([ 'a', 'b'],[ 100, 200, 300 ])
    [ [ 'a', 100 ], [ 'b', 200 ] ]
    >

    > nvpair.fast_kvl2tl([ 'a', 'b', 'c' ],[ 100, 200, 300 ])
    [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    >
    > nvpair.fast_kvl2tl([ 'a', 'b'],[ 100, 200, 300 ])
    [ [ 'a', 100 ], [ 'b', 200 ] ]
    >
    > nvpair.fast_kvl2tl([ 'a', 'b', 'c'],[ 100, 200])
    [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', undefined ] ]
    >

append

> var tl = [['a',100],['b',200],['c',300]]
> nvpair.append(tl,'d',400)
[ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ], [ 'd', 400 ] ]
> tl
[ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ], [ 'd', 400 ] ]
>

append_tl

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    var ntl = [ [ 'd', 400 ], [ 'e', 500 ] ]

    > nvpair.append_tl(tl,ntl)
    [
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ],
      [ 'd', 400 ],
      [ 'e', 500 ]
    ]
    > tl
    [
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ],
      [ 'd', 400 ],
      [ 'e', 500 ]
    ]
    >

append_l

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    var l = [ 'd', 400 , 'e', 500 ]

    > nvpair.append_l(tl,l)
    [
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ],
      [ 'd', 400 ],
      [ 'e', 500 ]
    ]
    > tl
    [
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ],
      [ 'd', 400 ],
      [ 'e', 500 ]
    ]

append_d

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    var d   = {'d':400,'e':500}

    > nvpair.append_d(tl,d)
    [
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ],
      [ 'd', 400 ],
      [ 'e', 500 ]
    ]
    > tl
    [
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ],
      [ 'd', 400 ],
      [ 'e', 500 ]
    ]

append_params

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    nvpair.append_params(tl, 'd', 400 , 'e', 500 )
    > tl
    [
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ],
      [ 'd', 400 ],
      [ 'e', 500 ]
    ]
    >

append_dl

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    var dl  = [{'d':400 }, {'e':500}]
    nvpair.append_dl(tl,dl)
    > tl
    [
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ],
      [ 'd', 400 ],
      [ 'e', 500 ]
    ]
    >

append_kvl

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    var kl  = ['d','e']
    var vl  = [400,500] 
    >     var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    >
    > nvpair.append_kvl(tl,kl,vl)
    > tl
    [
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ],
      [ 'd', 400 ],
      [ 'e', 500 ]
    ]
    >

prepend

> var tl = [['a',100],['b',200],['c',300]]
> nvpair.prepend(tl,'d',400)
[ [ 'd', 400 ], [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
> tl
[ [ 'd', 400 ], [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
>

prepend_tl

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    var ntl = [ [ 'd', 400 ], [ 'e', 500 ] ]
    nvpair.prepend_tl(tl,ntl)
    tl
    >     tl
    [
      [ 'd', 400 ],
      [ 'e', 500 ],
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ]
    ]
    >

prepend_l

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    var l = [ 'd', 400 , 'e', 500 ]
    nvpair.prepend_l(tl,l)
    tl
    >     tl
    [
      [ 'd', 400 ],
      [ 'e', 500 ],
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ]
    ]
    >

prepend_d

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    var d = {'d':400,'e':500}
    nvpair.prepend_d(tl,d)
    
    >     tl
    [
      [ 'd', 400 ],
      [ 'e', 500 ],
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ]
    ]
    >

prepend_params

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    nvpair.prepend_params(tl, 'd', 400 , 'e', 500 )
    tl
    >     tl
    [
      [ 'd', 400 ],
      [ 'e', 500 ],
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ]
    ]
    >

prepend_dl

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    var dl  = [{'d':400 }, {'e':500}]
    nvpair.prepend_dl(tl,dl)
    tl
    >     tl
    [
      [ 'd', 400 ],
      [ 'e', 500 ],
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ]
    ]
    >

prepend_kvl

    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    var kl  = ['d','e']
    var vl  = [400,500] 
    var tl  = [ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ] ]
    nvpair.prepend_kvl(tl,kl,vl)
    tl
    >     tl
    [
      [ 'd', 400 ],
      [ 'e', 500 ],
      [ 'a', 100 ],
      [ 'b', 200 ],
      [ 'c', 300 ]
    ]
    >

insert_before

var tl = [['a',100],['b',200],['c',300]]

> nvpair.insert_before(tl,1,'d',400)
[ [ 'a', 100 ], [ 'd', 400 ], [ 'b', 200 ], [ 'c', 300 ] ]
> tl
[ [ 'a', 100 ], [ 'd', 400 ], [ 'b', 200 ], [ 'c', 300 ] ]
>

insert_tl_before

var tl = [['a',100],['b',200],['c',300]]
var ntl = [['d',400],['e',500]]
nvpair.insert_tl_before(tl,1,ntl)
>
[
  [ 'a', 100 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'b', 200 ],
  [ 'c', 300 ]
]
>

insert_dl_before

var tl = [['a',100],['b',200],['c',300]]
var dl = [{d:400},{e:500}]
nvpair.insert_dl_before(tl,1,dl)
>
[
  [ 'a', 100 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'b', 200 ],
  [ 'c', 300 ]
]
>

insert_l_before

var tl = [['a',100],['b',200],['c',300]]
var l = ['d',400,'e',500]
nvpair.insert_l_before(tl,1,l)
>
[
  [ 'a', 100 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'b', 200 ],
  [ 'c', 300 ]
]
>

insert_d_before

var tl = [['a',100],['b',200],['c',300]]
var d = {'d':400,'e':500}
nvpair.insert_d_before(tl,1,d)
>
[
  [ 'a', 100 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'b', 200 ],
  [ 'c', 300 ]
]
>

insert_params_before

var tl = [['a',100],['b',200],['c',300]]
nvpair.insert_params_before(tl,1,'d',400,'e',500)
>
[
  [ 'a', 100 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'b', 200 ],
  [ 'c', 300 ]
]
>

insert_kvl_before

var tl = [['a',100],['b',200],['c',300]]
var kl = ['d','e']
var vl = [400,500]
nvpair.insert_kvl_before(tl,1,kl,vl)
>
[
  [ 'a', 100 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'b', 200 ],
  [ 'c', 300 ]
]
>

insert_after

var tl = [['a',100],['b',200],['c',300]]
nvpair.insert_after(tl,1,'d',400)
>
[ [ 'a', 100 ], [ 'b', 200 ], [ 'd', 400 ], [ 'c', 300 ] ]
>

insert_tl_after

var tl = [['a',100],['b',200],['c',300]]
var ntl = [['d',400],['e',500]]
nvpair.insert_tl_after(tl,1,ntl)
>
[
  [ 'a', 100 ],
  [ 'b', 200 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'c', 300 ]
]
>

insert_dl_after

var tl = [['a',100],['b',200],['c',300]]
var dl = [{d:400},{e:500}]
nvpair.insert_dl_after(tl,1,dl)
>
[
  [ 'a', 100 ],
  [ 'b', 200 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'c', 300 ]
]
>

insert_l_after

var tl = [['a',100],['b',200],['c',300]]
var l = ['d',400,'e',500]
nvpair.insert_l_after(tl,1,l)

>
[
  [ 'a', 100 ],
  [ 'b', 200 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'c', 300 ]
]
>

insert_d_after

var tl = [['a',100],['b',200],['c',300]]
var d = {'d':400,'e':500}
nvpair.insert_d_after(tl,1,d)

>
[
  [ 'a', 100 ],
  [ 'b', 200 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'c', 300 ]
]
>

insert_params_after

var tl = [['a',100],['b',200],['c',300]]
nvpair.insert_params_after(tl,1,'d',400,'e',500)

>
[
  [ 'a', 100 ],
  [ 'b', 200 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'c', 300 ]
]
>

insert_kvl_after

var tl = [['a',100],['b',200],['c',300]]
var kl = ['d','e']
var vl = [400,500]
nvpair.insert_kvl_after(tl,1,kl,vl)

>
[
  [ 'a', 100 ],
  [ 'b', 200 ],
  [ 'd', 400 ],
  [ 'e', 500 ],
  [ 'c', 300 ]
]
>

pop_between

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]

> nvpair.pop_between(tl,1,3)
[ [ 'b', 200 ], [ 'b', 2000 ] ]
> tl
[ [ 'a', 100 ], [ 'c', 300 ], [ 'd', 400 ] ]
>

pop_before

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]

> nvpair.pop_before(tl,3)
[ [ 'a', 100 ], [ 'b', 200 ], [ 'b', 2000 ] ]
> tl
[ [ 'c', 300 ], [ 'd', 400 ] ]
>

pop_after

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
> nvpair.pop_after(tl,3)
[ [ 'd', 400 ] ]
> tl
[ [ 'a', 100 ], [ 'b', 200 ], [ 'b', 2000 ], [ 'c', 300 ] ]
>

pop_from

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
nvpair.pop_from(tl,3)
> nvpair.pop_from(tl,3)
[ [ 'c', 300 ], [ 'd', 400 ] ]
> tl
[ [ 'a', 100 ], [ 'b', 200 ], [ 'b', 2000 ] ]
>

pop_to

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
nvpair.pop_to(tl,3)
>     nvpair.pop_to(tl,3)
[ [ 'a', 100 ], [ 'b', 200 ], [ 'b', 2000 ]]
>
> tl
[ ['c',300],[ 'd', 400 ] ]
>

pop_some

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
nvpair.pop_some(tl,1,3)
>     nvpair.pop_some(tl,1,3)
[ [ 'b', 200 ], [ 'c', 300 ] ]
> tl
[ [ 'a', 100 ], [ 'b', 2000 ], [ 'd', 400 ] ]
>

pop

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
> nvpair.pop(tl)
[ 'd', 400 ]
> tl
[ [ 'a', 100 ], [ 'b', 200 ], [ 'b', 2000 ], [ 'c', 300 ] ]
>

//if params.length === 1
var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
> nvpair.pop(tl,2)
[ 'b', 2000 ]
> tl
[ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ], [ 'd', 400 ] ]
>

//if params.length > 1
var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
> nvpair.pop(tl,1,3)
[ [ 'b', 200 ], [ 'c', 300 ] ]
>
> tl
[ [ 'a', 100 ], [ 'b', 2000 ], [ 'd', 400 ] ]
>

shift

//if n>1
var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
nvpair.shift(tl,3)
> nvpair.shift(tl,3)
[ [ 'a', 100 ], [ 'b', 200 ], [ 'b', 2000 ] ]
>
> tl
[ [ 'c', 300 ], [ 'd', 400 ] ]
>

//if n===1 or undefined
var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
> tl.shift()
[ 'a', 100 ]
> tl
[ [ 'b', 200 ], [ 'b', 2000 ], [ 'c', 300 ], [ 'd', 400 ] ]
>

rm_between

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]

> nvpair.rm_between(tl,1,3)
[ [ 'a', 100 ], [ 'c', 300 ], [ 'd', 400 ] ]
>

rm_before

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]

> nvpair.rm_before(tl,3)
[ [ 'c', 300 ], [ 'd', 400 ] ]
>

rm_after

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
> nvpair.rm_after(tl,3)
[ [ 'a', 100 ], [ 'b', 200 ], [ 'b', 2000 ], [ 'c', 300 ] ]
>

rm_from

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
nvpair.rm_from(tl,3)
> nvpair.rm_from(tl,3)
[ [ 'a', 100 ], [ 'b', 200 ], [ 'b', 2000 ] ]
>

rm_to

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
nvpair.rm_to(tl,3)
> 
[ ['c',300],[ 'd', 400 ] ]
>

rm_some

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
nvpair.rm_some(tl,1,3)
>     nvpair.rm_some(tl,1,3)
[ [ 'a', 100 ], [ 'b', 2000 ], [ 'd', 400 ] ]
>

rm_fst

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
nvpair.rm_fst(tl)
>     nvpair.rm_fst(tl)
[ [ 'b', 200 ], [ 'b', 2000 ], [ 'c', 300 ], [ 'd', 400 ] ]
>

rm_lst

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
nvpair.rm_lst(tl)
> nvpair.rm_lst(tl)
[ [ 'a', 100 ], [ 'b', 200 ], [ 'b', 2000 ], [ 'c', 300 ] ]
>

rm

var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]

 
//if params.length === 1
var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
> nvpair.rm(tl,2)
[ [ 'a', 100 ], [ 'b', 200 ], [ 'c', 300 ], [ 'd', 400 ] ]
>

//if params.length > 1
var tl = [['a',100],['b',200],['b',2000],['c',300],['d',400]]
> nvpair.rm(tl,1,3)
[ [ 'a', 100 ], [ 'b', 2000 ], [ 'd', 400 ] ]
>

get

> nvpair.get(tl,3)
[ 'c', 200 ]
>
> nvpair.get_some(tl,2,3,5)
[ [ 'b', 2000 ], [ 'c', 200 ], [ 'c', 200 ] ]
>

idx

nvpair.all_idxs_of_k(tl,'b')
nvpair.all_idxs_of_v(tl,200)
nvpair.all_idxs_of_kv(tl,'b',200)

> nvpair.all_idxs_of_k(tl,'b')
[ 1, 2, 4, 6 ]
> nvpair.all_idxs_of_v(tl,200)
[ 1, 3, 5, 6 ]
> nvpair.all_idxs_of_kv(tl,'b',200)
[ 1, 6 ]
>

> nvpair.fst_idx_of_k(tl,'b')
1
> nvpair.fst_idx_of_v(tl,200)
1
> nvpair.fst_idx_of_kv(tl,'b',200)
1
>

nvpair.lst_idx_of_k(tl,'b')
nvpair.lst_idx_of_v(tl,200)
nvpair.lst_idx_of_kv(tl,'b',200)

> nvpair.lst_idx_of_k(tl,'b')
6
> nvpair.lst_idx_of_v(tl,200)
6
> nvpair.lst_idx_of_kv(tl,'b',200)
6
>

> nvpair.which_idx_of_k(tl,'b',1)
2
>


nvpair.some_idxs_of_k(tl,'b',0,2)

> nvpair.some_idxs_of_k(tl,'b',0,2)
[ 1, 4 ]
>

has

var tl = [['a',100],['b',200],['b',2000],['c',200],['b',400],['c',200],['b',200]]

> nvpair.hasi(tl,0)
true
> nvpair.hasi(tl,3)
true
> nvpair.hasi(tl,6)
true
> nvpair.hasi(tl,7)
false
>
> nvpair.hask(tl,'b')
true
> nvpair.hask(tl,'x')
false
>
> nvpair.hasv(tl,999)
false
> nvpair.hasv(tl,200)
true
>
> nvpair.haskv(tl,'b',200)
true
>
> nvpair.haskv(tl,'b',500)
false
>

count

 nvpair.kcount(tl,key)
 nvpair.vcount(tl,value)
 nvpair.kvcount(tl,key,value)

filter

var tl = [['a',100],['b',200],['b',2000],['c',200],['b',400],['c',200],['b',200]]
> nvpair.filter(tl,(v,k,i)=>k==='b')
[ [ 'b', 200 ], [ 'b', 2000 ], [ 'b', 400 ], [ 'b', 200 ] ]
>

reduce

nvpair.foldl(tl,(acc,v,k,i)=>acc+`${i}:${k}:${v}`+' > ', "@ ")
> 
'@ 0:a:100 > 1:b:200 > 2:b:2000 > 3:c:200 > 4:b:400 > 5:c:200 > 6:b:200 > '
>

nvpair.foldr(tl,(acc,v,k,i)=>acc+`${i}:${k}:${v}`+' < ', "@ ")
> 
'@ 6:b:200 < 5:c:200 < 4:b:400 < 3:c:200 < 2:b:2000 < 1:b:200 < 0:a:100 < '
>

cond

> nvpair.every(tl,(v,k,i)=>k==='b')
false
> nvpair.any(tl,(v,k,i)=>k==='b')
true
>

mapk

var tl = [['a',100],['b',200],['b',2000],['c',200],['b',400],['c',200],['b',200]]
> nvpair.mapk(tl,(v,k,i)=>i+':'+k)
[
  [ '0:a', 100 ],
  [ '1:b', 200 ],
  [ '2:b', 2000 ],
  [ '3:c', 200 ],
  [ '4:b', 400 ],
  [ '5:c', 200 ],
  [ '6:b', 200 ]
]
>

mapv

nvpair.mapv(tl,(v,k,i)=>i+':'+v)
>
[
  [ 'a', '0:100' ],
  [ 'b', '1:200' ],
  [ 'b', '2:2000' ],
  [ 'c', '3:200' ],
  [ 'b', '4:400' ],
  [ 'c', '5:200' ],
  [ 'b', '6:200' ]
]
>

mapkv

> nvpair.mapkv(tl,(v,k,i)=>k+'@k',(v,k,i)=>v+'@v')
[
  [ 'a@k', '100@v' ],
  [ 'b@k', '200@v' ],
  [ 'b@k', '2000@v' ],
  [ 'c@k', '200@v' ],
  [ 'b@k', '400@v' ],
  [ 'c@k', '200@v' ],
  [ 'b@k', '200@v' ]
]
>

map

> nvpair.map(tl,(v,k,i)=>[k,i])
[
  [ 'a', 0 ],
  [ 'b', 1 ],
  [ 'b', 2 ],
  [ 'c', 3 ],
  [ 'b', 4 ],
  [ 'c', 5 ],
  [ 'b', 6 ]
]
>

mapk_inplace

var tl = [['a',100],['b',200],['b',2000],['c',200],['b',400],['c',200],['b',200]]
nvpair.mapk_inplace(tl,(v,k,i)=>i+':'+k);
tl
[
  [ '0:a', 100 ],
  [ '1:b', 200 ],
  [ '2:b', 2000 ],
  [ '3:c', 200 ],
  [ '4:b', 400 ],
  [ '5:c', 200 ],
  [ '6:b', 200 ]
]

mapv_inplace

var tl = [['a',100],['b',200],['b',2000],['c',200],['b',400],['c',200],['b',200]]
nvpair.mapv_inplace(tl,(v,k,i)=>i+':'+v);
tl
[
  [ 'a', '0:100' ],
  [ 'b', '1:200' ],
  [ 'b', '2:2000' ],
  [ 'c', '3:200' ],
  [ 'b', '4:400' ],
  [ 'c', '5:200' ],
  [ 'b', '6:200' ]
]

mapkv_inplace

var tl = [['a',100],['b',200],['b',2000],['c',200],['b',400],['c',200],['b',200]]
nvpair.mapkv_inplace(tl,(v,k,i)=>k+'@k',(v,k,i)=>v+'@v')
tl

[
  [ 'a@k', '100@v' ],
  [ 'b@k', '200@v' ],
  [ 'b@k', '2000@v' ],
  [ 'c@k', '200@v' ],
  [ 'b@k', '400@v' ],
  [ 'c@k', '200@v' ],
  [ 'b@k', '200@v' ]
]

map_inplace

var tl = [['a',100],['b',200],['b',2000],['c',200],['b',400],['c',200],['b',200]]
nvpair.map_inplace(tl,(v,k,i)=>[k,i])
tl
[
  [ 'a', 0 ],
  [ 'b', 1 ],
  [ 'b', 2 ],
  [ 'c', 3 ],
  [ 'b', 4 ],
  [ 'c', 5 ],
  [ 'b', 6 ]
]

kget

var tl = [['a',100],['b',200],['b',2000],['c',200],['b',400],['c',200],['b',200]]

> nvpair.kget_fst(tl,'b')
[ 'b', 200 ]
> nvpair.kget_lst(tl,'b')
[ 'b', 200 ]
> nvpair.kget_which(tl,'b')
[ 'b', 2000 ]
> nvpair.kget_some(tl,'b',1,2)
[ [ 'b', 2000 ], [ 'b', 400 ] ]
>
> nvpair.kget_all(tl,'b')
[ [ 'b', 200 ], [ 'b', 2000 ], [ 'b', 400 ], [ 'b', 200 ] ]
>
> nvpair.kget(tl,'b')
[ 'b', 200 ]
>
> nvpair.kget(tl,'b','c')
[ [ 'b', 200 ], [ 'c', 200 ] ]
>
> nvpair.kget.toString()
'(tl,...ks) => {\n' +
  '    if(ks.length ===0) {\n' +
  '        return(undefined)\n' +
  '    } else if(ks.length ===1) {\n' +
  '        return(kget_fst(tl,ks[0]))\n' +
  '    } else {\n' +
  '        return(ks.map(k=>kget_fst(tl,k)))\n' +
  '    }\n' +
  '}'



nvpair.kgetv_fst(tl,'b')
nvpair.kgetv_lst(tl,'b')
nvpair.kgetv_which(tl,'b')
nvpair.kgetv_some(tl,'b',1,2)
nvpair.kgetv_all(tl,'b')

nvpair.kgetv(tl,'b')
nvpair.kgetv(tl,'b','c')
nvpair.kgetv.toString()

> nvpair.kgetv_fst(tl,'b')
200
> nvpair.kgetv_lst(tl,'b')
200
> nvpair.kgetv_which(tl,'b')
Symbol(empty)
> nvpair.kgetv_some(tl,'b',1,2)
[ 2000, 400 ]
> nvpair.kgetv_all(tl,'b')
[ 200, 2000, 400, 200 ]
>

> nvpair.kgetv(tl,'b')
200
> nvpair.kgetv(tl,'b','c')
[ 200, 200 ]
> nvpair.kgetv.toString()
'(tl,...ks) => {\n' +
  '    if(ks.length ===0) {\n' +
  '        return(empty)\n' +
  '    } else if(ks.length ===1) {\n' +
  '        return(kgetv_fst(tl,ks[0]))\n' +
  '    } else {\n' +
  '        return(ks.map(k=>kgetv_fst(tl,k)))\n' +
  '    }\n' +
  '}'
>

vget

> nvpair.vget_fst(tl,200)
[ 'b', 200 ]
> nvpair.vget_lst(tl,200)
[ 'b', 200 ]
> nvpair.vget_which(tl,200,2)
[ 'c', 200 ]
> nvpair.vget_some(tl,200,2,3)
[ [ 'c', 200 ], [ 'b', 200 ] ]
> nvpair.vget_all(tl,200)
[ [ 'b', 200 ], [ 'c', 200 ], [ 'c', 200 ], [ 'b', 200 ] ]
>
> nvpair.vget(tl,200)
[ 'b', 200 ]
> nvpair.vget(tl,200,2000)
[ [ 'b', 200 ], [ 'b', 2000 ] ]
> nvpair.vget(tl)
undefined
>

> nvpair.vgetk_fst(tl,200)
'b'
> nvpair.vgetk_lst(tl,200)
'b'
> nvpair.vgetk_which(tl,200,2)
'c'
> nvpair.vgetk_some(tl,200,2,3)
[ 'c', 'b' ]
> nvpair.vgetk_all(tl,200)
[ 'b', 'c', 'c', 'b' ]
>

> nvpair.vgetk(tl,200)
'b'
> nvpair.vgetk(tl,200,400,100)
[ 'b', 'b', 'a' ]
>

set

kset

> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
>
> nvpair.kset_all(tl,1,'B',999)
> tl
[
  [ 0, 'a' ],
  [ 'B', 999 ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 'B', 999 ],
  [ 2, 'c' ]
]
>


var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
> nvpair.kset_fst(tl,1,'B',999)
> tl
[
  [ 0, 'a' ],
  [ 'B', 999 ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
>


> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
> nvpair.kset_lst(tl,1,'B',999)
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 'B', 999 ],
  [ 2, 'c' ]
]
>

> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
> nvpair.kset_which(tl,1,1,'B',999)
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 'B', 999 ],
  [ 2, 'c' ]
]
>

> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.kset_some(tl,1,'B',999,0,1)
undefined
> tl
[
  [ 0, 'a' ],
  [ 'B', 999 ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 'B', 999 ],
  [ 2, 'c' ]
]
>


var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
> nvpair.ksetk_all(tl,1,'X')
> tl
[
  [ 0, 'a' ],
  [ 'X', 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 'X', 'b' ],
  [ 2, 'c' ]
]
>

var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]

> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.ksetk_fst(tl,1,'X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 'X', 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
>
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.ksetk_lst(tl,1,'X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 'X', 'b' ],
  [ 2, 'c' ]
]
>
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.ksetk_which(tl,1,1,'X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 'X', 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.ksetk_some(tl,1,'X',0,1)
undefined
> tl
[
  [ 0, 'a' ],
  [ 'X', 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 'X', 'b' ],
  [ 2, 'c' ]
]
>


> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.ksetv_some(tl,1,'X',0,1)
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'X' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'X' ],
  [ 2, 'c' ]
]
>
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.ksetv_which(tl,1,0,'X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'X' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.ksetv_fst(tl,1,'X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'X' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.ksetv_lst(tl,1,'X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'X' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.ksetv_all(tl,1,'X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'X' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'X' ],
  [ 2, 'c' ]
]
>


var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]

vset

> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vset_all(tl,'a','X','Y')
undefined
> tl
[
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vset_some(tl,'a','X','Y',0,1)
undefined
> tl
[
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vset_fst(tl,'a','X','Y')
undefined
> tl
[
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vset_lst(tl,'a','X','Y')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
>


> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vset_all(tl,'a','X','Y')
undefined
> tl
[
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vset_some(tl,'a','X','Y',0,1)
undefined
> tl
[
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vset_fst(tl,'a','X','Y')
undefined
> tl
[
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vset_lst(tl,'a','X','Y')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'X', 'Y' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vsetk_fst(tl,'a','X')
undefined
> tl
[
  [ 'X', 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vsetk_lst(tl,'a','X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'X', 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vsetk_which(tl,'a',1,'X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'X', 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]

> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vsetk_some(tl,'a','X',0,1)
undefined
> tl
[
  [ 'X', 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'X', 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
>
> nvpair.vsetk_all(tl,'a','X')
undefined
> tl
[
  [ 'X', 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'X', 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
>



> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vsetv_all(tl,'a','X')
undefined
> tl
[
  [ 0, 'X' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'X' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vsetv_fst(tl,'a','X')
undefined
> tl
[
  [ 0, 'X' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vsetv_lst(tl,'a','X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'X' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vsetv_which(tl,'a',0,'X')
undefined
> tl
[
  [ 0, 'X' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]
> var tl = [ [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], [ 3, 'a' ], [ 1, 'b' ],[2,'c'] ]
undefined
> nvpair.vsetv_some(tl,'a','X',0,1)
undefined
> tl
[
  [ 0, 'X' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'X' ],
  [ 1, 'b' ],
  [ 2, 'c' ]
]

kvset

> var tl = [
...     [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
...     [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
...     [ 0, 'a' ]
... ]
undefined
>
> nvpair.kvsetv_some(tl,0,'a','X',0,1)
undefined
> tl
[
  [ 0, 'X' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 0, 'X' ]
]
>
>
>
>
> var tl = [
...     [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
...     [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
...     [ 0, 'a' ]
... ]
undefined
>
> nvpair.kvsetv_all(tl,0,'a','X')
undefined
> tl
[
  [ 0, 'X' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 0, 'X' ]
]
>
>
> var tl = [
...     [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
...     [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
...     [ 0, 'a' ]
... ]
undefined
>
> nvpair.kvsetv_fst(tl,0,'a','X')
undefined
> tl
[
  [ 0, 'X' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 0, 'a' ]
]
>
>
>
> var tl = [
...     [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
...     [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
...     [ 0, 'a' ]
... ]
undefined
>
> nvpair.kvsetv_lst(tl,0,'a','X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 0, 'X' ]
]
>
>
>
> var tl = [
...     [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
...     [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
...     [ 0, 'a' ]
... ]
undefined
>
> nvpair.kvsetv_which(tl,0,'a',1,'X')
undefined
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 0, 'X' ]
]
>
>

set

> var tl = [
...     [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
...     [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
...     [ 0, 'a' ]
... ]
undefined
>
> nvpair.set(tl,1,11,'B')
[ 11, 'B' ]
> tl
[
  [ 0, 'a' ],
  [ 11, 'B' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 0, 'a' ]
]
>

> nvpair.set_some(tl,"11111k",'B',0,2,4)
undefined
> tl
[
  [ '11111k', 'B' ],
  [ 11, 'B' ],
  [ '11111k', 'B' ],
  [ 3, 'a' ],
  [ '11111k', 'B' ],
  [ 2, 'c' ],
  [ 0, 'a' ]
]
>

uniq

var tl = [ 
    [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], 
    [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
    [ 0, 'a' ]
]

> nvpair.uniq(tl)
[ [ 0, 'a' ], [ 1, 'b' ], [ 2, 'c' ], [ 3, 'a' ] ]
>
> nvpair.kuniq(tl)
[ [ 0, 'a' ], [ 1, 'b' ], [ 2, 'c' ], [ 3, 'a' ] ]
>
> nvpair.vuniq(tl)
[ [ 0, 'a' ], [ 1, 'b' ], [ 2, 'c' ] ]
>

sort

> var tl = [
...     [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
...     [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
...     [ 0, 'a' ]
... ]
undefined
>
> nvpair.ksort(tl)
undefined
> tl
[
  [ 0, 'a' ],
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 2, 'c' ],
  [ 3, 'a' ]
]
>




> var tl = [
...     [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
...     [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
...     [ 0, 'a' ]
... ]
undefined
>
> nvpair.vsort(tl)
undefined
> tl
[
  [ 0, 'a' ],
  [ 3, 'a' ],
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 2, 'c' ]
]
>
> var tl = [
...     [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
...     [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
...     [ 0, 'a' ]
... ]
undefined
>
> nvpair.kvsort(tl)
undefined
> tl
[
  [ 0, 'a' ],
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 2, 'c' ],
  [ 3, 'a' ]
]
>


> var tl = [
...     [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
...     [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
...     [ 0, 'a' ]
... ]
undefined
>
> nvpair.vksort(tl)
undefined
> tl
[
  [ 0, 'a' ],
  [ 0, 'a' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 2, 'c' ]
]
>

update

var tl = [ 
    [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], 
    [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
    [ 0, 'a' ]
]

nvpair.update_all(tl,[[0,'aaa'],[4,'bbb']])

> nvpair.update_all(tl,[[0,'aaa'],[4,'bbb']])
undefined
> tl
[
  [ 0, 'aaa' ],
  [ 3, 'a' ],
  [ 0, 'aaa' ],
  [ 1, 'b' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 2, 'c' ]
]
>

assign

var tl = [ 
    [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], 
    [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
    [ 0, 'a' ]
]


nvpair.assign_all(tl,[[0,'aaa'],[4,'bbb']])

> tl
[
  [ 0, 'aaa' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 0, 'aaa' ],
  [ 4, 'bbb' ]
]
>

replenish

var tl = [ 
    [ 0, 'a' ], [ 1, 'b' ],[2, 'c'], 
    [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
    [ 0, 'a' ]
]

nvpair.replenish(tl,[[0,'aaa'],[4,'bbb']])

> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 3, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 0, 'a' ],
  [ 4, 'bbb' ]
]
>

find

var tl = [
    [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
    [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
    [ 0, 'a' ]
]

> nvpair.findi_all(tl,(v,k,i)=>v==='a')
[ 6, 3, 0 ]
>


> nvpair.findk_all(tl,(v,k,i)=>v==='a')
[ 0, 3, 0 ]
>
> nvpair.findkv_all(tl,(v,k,i)=>v==='a')
[ [ 0, 'a' ], [ 3, 'a' ], [ 0, 'a' ] ]
>
> nvpair.findv_all(tl,(v,k,i)=>v==='a')
[ 'a', 'a', 'a' ]
>

kdel

var tl = [
    [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
    [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
    [ 0, 'a' ]
]

> nvpair.kdel_all(tl,0)
[ [ 0, 'a' ], [ 0, 'a' ] ]
> tl
[ [ 1, 'b' ], [ 2, 'c' ], [ 3, 'a' ], [ 1, 'b' ], [ 2, 'c' ] ]
>

vdel

var tl = [
    [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
    [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
    [ 0, 'a' ]
]

nvpair.vdel_all(tl,'a')
[ [ 0, 'a' ], [ 3, 'a' ], [ 0, 'a' ] ]

> tl
[ [ 1, 'b' ], [ 2, 'c' ], [ 1, 'b' ], [ 2, 'c' ] ]
>

kvdel

var tl = [
    [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
    [ 3, 'a' ], [ 1, 'b' ],[2,'c'],
    [ 0, 'a' ]
]
> nvpair.kvdel_all(tl,0,'a')
[ [ 0, 'a' ], [ 0, 'a' ] ]
>
> tl
[ [ 1, 'b' ], [ 2, 'c' ], [ 3, 'a' ], [ 1, 'b' ], [ 2, 'c' ] ]
>

proxy

> var tl = [
...     [ 0, 'a' ], [ 1, 'b' ],[2, 'c'],
...     [ 'mmm', 'a' ], [ 1, 'b' ],['t','c'],
...     [ 0, 'a' ]
... ]
undefined
> var TL0 = new nvpair.Tlist(tl)
undefined
> var proxy = nvpair.proxy(tl)
undefined
> (delete proxy.t)
true
> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'mmm', 'a' ],
  [ 1, 'b' ],
  [ 0, 'a' ]
]
>

proxy.mmm = 'AAAA'

> tl
[
  [ 0, 'a' ],
  [ 1, 'b' ],
  [ 2, 'c' ],
  [ 'mmm', 'AAAA' ],
  [ 1, 'b' ],
  [ 0, 'a' ]
]
>

> proxy[0]
'a'
>

class

const Tlist = nvpair.Tlist;

> Tlist.from_list(["a",100,"b",200,"b",2000,"c",300])
{
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 300
}

> Tlist.from_params("a",100,"b",200,"b",2000,"c",300)
{
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 300
}

> Tlist.from_kvl([ 'a', 'b', 'b', 'c' ], [ 100, 200, 2000, 300 ])
{
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 300
}

>
> Tlist.from_dict({ a: 100, b: 2000, c: 300 })
{
    "a" : 100 ,
    "b" : 2000 ,
    "c" : 300
}
> Tlist.from_dlist([ { a: 100 }, { b: 200 }, { b: 2000 }, { c: 300 } ])
{
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 300
}

>

method

repr

var TL0 = new nvpair.Tlist([['a',100],['b',200],['b',2000],['c',300]])

/*
> TL0
{
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 300
}

>
*/

var TL1 = new nvpair.Tlist([['x',100],['y',TL0],['z',2000],['y',300]])

/*

> TL1
{
    "x" : 100 ,
    "y" : Tlist {.../*  .$_[1]   */...}  ,
    "z" : 2000 ,
    "y" : 300
}

> TL1.$_[1]
  {
      "a" : 100 ,
      "b" : 200 ,
      "b" : 2000 ,
      "c" : 300
  }

>
>

*/

to_xxx

    > var TL0 = new nvpair.Tlist([['a',100],['b',200],['b',2000],['c',300]])
    > TL0.tlist_
    [ [ 'a', 100 ], [ 'b', 200 ], [ 'b', 2000 ], [ 'c', 300 ] ]
    >
    > TL0.list_
    [
      'a', 100, 'b',
      200, 'b', 2000,
      'c', 300
    ]
    > TL0.dlist_
    [ { a: 100 }, { b: 200 }, { b: 2000 }, { c: 300 } ]
    >
    > TL0.kvl_
    [ [ 'a', 'b', 'b', 'c' ], [ 100, 200, 2000, 300 ] ]
    >
    >
    > TL0.dict_
    { a: 100, b: 2000, c: 300 }
    >

push

> var TL0 = new nvpair.Tlist([['a',100],['b',200],['b',2000],['c',300]])
> TL0.push('X',999999)
{
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 300 ,
    "X" : 999999
}
>

unshift

var TL0 = new nvpair.Tlist([['a',100],['b',200],['b',2000],['c',300]])
TL0.unshift('X',999999)

> TL0.unshift('X',999999)
{
    "X" : 999999 ,
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 300
}

>

extend

var TL0 = new nvpair.Tlist([['a',100],['b',200],['b',2000],['c',300]])
var TL1 = new nvpair.Tlist([['X',1111],['Y',2222]])

TL0.extend(TL1)
TL0
TL1

>     TL0
{
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 300 ,
    "X" : 1111 ,
    "Y" : 2222
}

>     TL1
{
    "X" : 1111 ,
    "Y" : 2222
}

>

prextend

var TL0 = new nvpair.Tlist([['a',100],['b',200],['b',2000],['c',300]])
var TL1 = new nvpair.Tlist([['X',1111],['Y',2222]])

TL0.prextend(TL1)
TL0
TL1

>     TL0
{
    "X" : 1111 ,
    "Y" : 2222 ,
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 300
}

>     TL1
{
    "X" : 1111 ,
    "Y" : 2222
}

swap_lr

var TL0 = new nvpair.Tlist([['a',100],['b',200],['b',2000],['c',300]])
TL0.swaplr()

> var TL0 = new nvpair.Tlist([['a',100],['b',200],['b',2000],['c',300]])

> TL0
{
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 300
}

> TL0.swaplr()
{
    100 : "a" ,
    200 : "b" ,
    2000 : "b" ,
    300 : "c"
}

> TL0
{
    100 : "a" ,
    200 : "b" ,
    2000 : "b" ,
    300 : "c"
}

>

prepend

TL0.prepend
> TL0.prepend_
TL0.prepend_dl      TL0.prepend_kvl     TL0.prepend_l       TL0.prepend_params  TL0.prepend_tl

append

TL0.append
> TL0.append_
TL0.append_dl      TL0.append_kvl     TL0.append_l       TL0.append_params  TL0.append_tl

insert

> TL0.insert_
TL0.insert_after          TL0.insert_before         TL0.insert_dl_after       TL0.insert_dl_before      TL0.insert_kvl_after
TL0.insert_kvl_before     TL0.insert_l_after        TL0.insert_l_before       TL0.insert_params_after   TL0.insert_params_before
TL0.insert_tl_after       TL0.insert_tl_before

pop(with index)

> TL0.pop
TL0.pop          TL0.pop_after    TL0.pop_before   TL0.pop_between  TL0.pop_from     TL0.pop_some     TL0.pop_to
TL0.shift

rm(with index)

> TL0.rm
TL0.rm
TL0.rm_after    TL0.rm_before   TL0.rm_between  TL0.rm_from     TL0.rm_fst      TL0.rm_lst      TL0.rm_some     TL0.rm_to

get(with index)

> TL0.get(2)
[ 'b', 2000 ]
>
> TL0.get_some(2,4)
[ [ 'b', 2000 ], [ 'b', 400 ] ]
>

idx

> TL0.fst_idx_of_
TL0.fst_idx_of_k   TL0.fst_idx_of_kv  TL0.fst_idx_of_v

> TL0.lst_idx_of_
TL0.lst_idx_of_k   TL0.lst_idx_of_kv  TL0.lst_idx_of_v

> TL0.all_idxs_of_
TL0.all_idxs_of_k   TL0.all_idxs_of_kv  TL0.all_idxs_of_v

> TL0.which_idx_of_
TL0.which_idx_of_k   TL0.which_idx_of_kv  TL0.which_idx_of_v

> TL0.some_idxs_of_
TL0.some_idxs_of_k   TL0.some_idxs_of_kv  TL0.some_idxs_of_v

has

TL0.hasi            TL0.hask            TL0.haskv           TL0.hasv

count

var TL0 = new nvpair.Tlist([['a',100],['b',200],['b',2000],['c',200],['b',400],['c',200],['b',200]])
> TL0
{
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 200 ,
    "b" : 400 ,
    "c" : 200 ,
    "b" : 200
}

> TL0.vcount(200)
4
> TL0.vcount(555)
0
>
> TL0.kvcount('b',200)
2
> TL0.kcount('b')
4
>

reverse

> TL0
{
    "a" : 100 ,
    "b" : 200 ,
    "b" : 2000 ,
    "c" : 200 ,
    "b" : 400 ,
    "c" : 200 ,
    "b" : 200
}

> TL0.reverse()
{
    "b" : 200 ,
    "c" : 200 ,
    "b" : 400 ,
    "c" : 200 ,
    "b" : 2000 ,
    "b" : 200 ,
    "a" : 100
}

concat

var TL0 = new nvpair.Tlist([['a',100],['b',200],['c',200]])
var TL1 = new nvpair.Tlist([['d',300],['e',400]])
var TL2 = TL0.concat(TL1)

> TL2
{
    "a" : 100 ,
    "b" : 200 ,
    "c" : 200 ,
    "d" : 300 ,
    "e" : 400
}

> TL0
{
    "a" : 100 ,
    "b" : 200 ,
    "c" : 200
}

> TL1
{
    "d" : 300 ,
    "e" : 400
}

>

reduce

> TL0.fold
TL0.foldl  TL0.foldr

filter

> TL0.filter((v,k,i)=>k==='b')
{
    "b" : 200 ,
    "b" : 2000 ,
    "b" : 400 ,
    "b" : 200
}

cond

TL0.every,TL0.any

map

> TL0.map
TL0.map            TL0.map_inplace    TL0.mapk           TL0.mapk_inplace   TL0.mapkv          TL0.mapkv_inplace  TL0.mapv
TL0.mapv_inplace

kget

> TL0.kget
TL0.kget         TL0.kget_all     TL0.kget_fst     TL0.kget_lst     TL0.kget_some
TL0.kget_which   TL0.kgetv        TL0.kgetv_all    TL0.kgetv_fst    TL0.kgetv_lst
TL0.kgetv_some   TL0.kgetv_which

vget

> TL0.vget
TL0.vget         TL0.vget_all     TL0.vget_fst     TL0.vget_lst     TL0.vget_some
TL0.vget_which   TL0.vgetk        TL0.vgetk_all    TL0.vgetk_fst    TL0.vgetk_lst
TL0.vgetk_some   TL0.vgetk_which

set

> TL0.set
TL0.set       TL0.set_some

> TL0.kset
TL0.kset_all     TL0.kset_fst     TL0.kset_lst     TL0.kset_some    TL0.kset_which
TL0.ksetk_all    TL0.ksetk_fst    TL0.ksetk_lst    TL0.ksetk_some   TL0.ksetk_which
TL0.ksetv_all    TL0.ksetv_fst    TL0.ksetv_lst    TL0.ksetv_some   TL0.ksetv_which

> TL0.vset
TL0.vset_all     TL0.vset_fst     TL0.vset_lst     TL0.vset_some    TL0.vset_which
TL0.vsetk_all    TL0.vsetk_fst    TL0.vsetk_lst    TL0.vsetk_some   TL0.vsetk_which
TL0.vsetv_all    TL0.vsetv_fst    TL0.vsetv_lst    TL0.vsetv_some   TL0.vsetv_which

> TL0.kvset_
TL0.kvset_all    TL0.kvset_fst    TL0.kvset_lst    TL0.kvset_some   TL0.kvset_which

uniq

> TL0.uniq
TL0.uniq          TL0.uniq_inplace

> TL0.kuniq
TL0.kuniq          TL0.kuniq_inplace

> TL0.vuniq
TL0.vuniq          TL0.vuniq_inplace

sort

TL0.ksort TL0.vsort TL0.kvsort

update

> TL0.update_
TL0.update_all    TL0.update_fst    TL0.update_lst    TL0.update_some   TL0.update_which

assign

> TL0.assign_
TL0.assign_all    TL0.assign_fst    TL0.assign_lst    TL0.assign_some   TL0.assign_which

replenish

> TL0.replenish

find

> TL0.find
TL0.findi_all     TL0.findi_fst     TL0.findi_lst     TL0.findi_some    TL0.findi_which
TL0.findk_all     TL0.findk_fst     TL0.findk_lst     TL0.findk_some    TL0.findk_which
TL0.findkv_all    TL0.findkv_fst    TL0.findkv_lst    TL0.findkv_some   TL0.findkv_which
TL0.findv_all     TL0.findv_fst     TL0.findv_lst     TL0.findv_some    TL0.findv_which

del

> TL0.kdel_
TL0.kdel
TL0.kdel_all    TL0.kdel_fst    TL0.kdel_lst    TL0.kdel_some   TL0.kdel_which

> TL0.vdel_
TL0.vdel
TL0.vdel_all    TL0.vdel_fst    TL0.vdel_lst    TL0.vdel_some   TL0.vdel_which

> TL0.kvdel_
TL0.kvdel
TL0.kvdel_all    TL0.kvdel_fst    TL0.kvdel_lst    TL0.kvdel_some   TL0.kvdel_which

proxy

TL0.$_

LICENSE

  • ISC