@blakeembrey/deque
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.5 • Public • Published

    Deque

    NPM version NPM downloads Build status Test coverage

    Deques are a generalization of stacks and queues (the name is pronounced "deck" and is short for "double-ended queue"). -- Python collections.

    Installation

    npm install @blakeembrey/deque --save
    

    Usage

    • size Returns the number of elements in the deque.
    • push(x) Add x to right side of the deque.
    • pushLeft(x) Add x to the left side of the deque.
    • clear() Remove all elements from the deque leaving it with length 0.
    • extend(iterable) Extend the right side of the deque by appending elements from iterable.
    • extendLeft(iterable) Extend the left side of the deque by appending elements from iterable.
    • peek(i) Return the element at index i in the deque.
    • indexOf(x, start?) Return the position of x in the deque.
    • has(x) Return a boolean indicating whether x is in the deque.
    • insert(i, x) Insert x into the deque at position i.
    • pop() Remove and return an element from the right side of the deque. If no elements are present, throws RangeError.
    • popLeft() Return and return an element from the left side of the deque. If no elements are present, throws RangeError.
    • delete(i) Delete the value at position i.
    • reverse() Reverse the elements of the deque in-place.
    • rotate(n=1) Rotate the deque n steps to the right.
    • entries() Return an iterable of deque.
    • @@iterator() Return an iterable of deque.
    import { Deque } from '@blakeembrey/deque'
     
    const d = new Deque('ghi')
     
    for (const value of d) {
      console.log(value.toUpperCase()) //=> G H I
    }
     
    d.push('j')
    d.pushLeft('f')
    //=> Deque(['f', 'g', 'h', 'i', 'j'])
     
    d.pop() //=> 'j'
    d.popLeft() //=> 'f'
     
    Array.from(d) //=> ['g', 'h', 'i']
     
    d.peek(0) //=> 'g'
    d.peek(-1) //=> 'i'
     
    d.extend('jkl')
    //=> Deque(['g', 'h', 'i', 'j', 'k', 'l'])
     
    d.rotate(1)
    //=> Deque(['l', 'g', 'h', 'i', 'j', 'k'])
     
    d.rotate(-1)
    //=> Deque(['g', 'h', 'i', 'j', 'k', 'l'])
     
    const d2 = new Deque(d)
     
    d2 //=> Deque(['g', 'h', 'i', 'j', 'k', 'l'])

    TypeScript

    This project uses TypeScript and publishes definitions on NPM.

    Reference

    Circular array implementation originally based on denque with additional optimizations.

    License

    Apache 2.0

    Install

    npm i @blakeembrey/deque

    DownloadsWeekly Downloads

    115,092

    Version

    1.0.5

    License

    Apache-2.0

    Unpacked Size

    58.6 kB

    Total Files

    9

    Last publish

    Collaborators

    • blakeembrey