npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

nvpair

v1.0.2

Published

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

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