nv-data-stack
- nv-data-stack is very simple util of STACK List
- only support 5 action : push/pop/push_some/pop_some/clear
- just a array-like object, the only different is it attach event for each-action
- two mode: fixed / unlimited
- in fixed: push will trigger auto-drop when reach-max-size, simulate the stack-overflow
- in unlimited, will NOT trigger drop,others same
- fixed performance is better,coz it only USE Array push when INIT
install
- npm install nv-data-stack
usage
const {Fixed,Unlimited,EVENT_DICT} = require("nv-data-stack")
fixed mode
const {Fixed,EVENT_DICT} = require("nv-data-stack")
const {E,ET} = require("nv-facutil-event");
###init
//oet is for notification
var oet = new ET()
oet.addEventListener(EVENT_DICT.push,(r)=>{console.log("push one: ",r,r.data)})
oet.addEventListener(EVENT_DICT.push_some,(r)=>{console.log("push some: ",r,r.data)})
oet.addEventListener(EVENT_DICT.drop,(r)=>{console.log("dropped one: ",r,r.data)})
oet.addEventListener(EVENT_DICT.drop_some,(r)=>{console.log("dropped some: ",r,r.data)})
var fixed = new Fixed(6,oet)
//iet is for feedback from who use the pop/pop_some
fixed.iet.addEventListener(EVENT_DICT.pop,(r)=>{console.log("popped one: ",r,r.data)})
fixed.iet.addEventListener(EVENT_DICT.pop_some,(r)=>{console.log("popped some: ",r,r.data)})
> fixed.max_size
6
> fixed.length
0
>
push
> fixed.push('A')
push one: E {
type: 'push',
defaultPrevented: false,
cancelable: false,
timeStamp: 10950.433631896973
} A
undefined
> fixed.push_some('B','C','D','E')
push some: E {
type: 'push_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 12509.81013584137
} [ 'B', 'C', 'D', 'E' ]
undefined
> fixed
[ 'A', 'B', 'C', 'D', 'E' ]
>
fixed.push('F')
fixed.length
> fixed.push('G')
dropped one: E {
type: 'drop',
defaultPrevented: false,
cancelable: false,
timeStamp: 73309.54272389412
} G
undefined
> fixed
[ 'A', 'B', 'C', 'D', 'E', 'F' ]
> fixed.dropped
'G'
>
> fixed.push_some('I','H')
dropped some: E {
type: 'drop_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 98528.9359588623
} [ 'I', 'H' ]
push some: E {
type: 'push_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 98532.67016887665
} [ 'I', 'H' ]
undefined
> fixed.dropped
[ 'I', 'H' ]
> fixed
[ 'A', 'B', 'C', 'D', 'E', 'F' ]
>
pop
> fixed.pop()
popped one: E {
type: 'pop',
defaultPrevented: false,
cancelable: false,
timeStamp: 119138.81831097603
} F
'F'
> fixed
[ 'A', 'B', 'C', 'D', 'E' ]
>
> fixed.pop_some(2)
popped some: E {
type: 'pop_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 134834.49794387817
} [ 'D', 'E' ]
[ 'D', 'E' ]
> fixed
[ 'A', 'B', 'C' ]
>
clear
fixed.clear()
> fixed.lefted_length
6
> fixed
[]
> fixed.length
0
>
unlimited mode
const {Unlimited,EVENT_DICT} = require("nv-data-stack")
const {E,ET} = require("nv-facutil-event");
###init
//oet is for notification
var oet = new ET()
oet.addEventListener(EVENT_DICT.push,(r)=>{console.log("push one: ",r,r.data)})
oet.addEventListener(EVENT_DICT.push_some,(r)=>{console.log("push some: ",r,r.data)})
var unlimited = new Unlimited(oet)
//iet is for feedback
unlimited.iet.addEventListener(EVENT_DICT.pop,(r)=>{console.log("popped one: ",r,r.data)})
unlimited.iet.addEventListener(EVENT_DICT.pop_some,(r)=>{console.log("popped some: ",r,r.data)})
push
unlimited.push('A')
push one: E {
type: 'push',
defaultPrevented: false,
cancelable: false,
timeStamp: 19640.83587384224
} A
unlimited.push_some('B','C','D')
push some: E {
type: 'push_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 38873.77540683746
} [ 'B', 'C', 'D' ]
> unlimited
[ 'A', 'B', 'C', 'D' ]
>
pop
unlimited.pop();
popped one: E {
type: 'pop',
defaultPrevented: false,
cancelable: false,
timeStamp: 75995.04537796974
} D
'D'
unlimited.pop_some(2)
popped some: E {
type: 'pop_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 94956.76220583916
} [ 'B', 'C' ]
[ 'B', 'C' ]
>
> unlimited
[ 'A' ]
>
clear
> unlimited.clear()
undefined
> unlimited
[]
>
METHODS
fixed
fixed.clear fixed.constructor fixed.dropped
fixed.get_item fixed.iet fixed.lefted_length
fixed.length fixed.lst_index fixed.max_size
fixed.oet fixed.pop fixed.pop_some
fixed.push fixed.push_some
fixed[Symbol.iterator]
unlimited
unlimited.clear unlimited.constructor unlimited.get_item
unlimited.iet unlimited.length unlimited.lst_index
unlimited.oet unlimited.pop unlimited.pop_some
unlimited.push unlimited.push_some
unlimited[Symbol.iterator]
LICENSE
- ISC