Deques are a generalization of stacks and queues
npm install @blakeembrey/deque[![NPM version][npm-image]][npm-url]
[![NPM downloads][downloads-image]][downloads-url]
[![Build status][travis-image]][travis-url]
[![Test coverage][coveralls-image]][coveralls-url]
> Deques are a generalization of stacks and queues (the name is pronounced "deck" and is short for "double-ended queue").
> -- Python collections.
```
npm install @blakeembrey/deque --save
- 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.
`js
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')
d //=> 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')
d //=> Deque(['g', 'h', 'i', 'j', 'k', 'l'])
d.rotate(1)
d //=> Deque(['l', 'g', 'h', 'i', 'j', 'k'])
d.rotate(-1)
d //=> Deque(['g', 'h', 'i', 'j', 'k', 'l'])
const d2 = new Deque(d)
d2 //=> Deque(['g', 'h', 'i', 'j', 'k', 'l'])
`
This project uses TypeScript and publishes definitions on NPM.
Circular array implementation originally based on denque` with additional optimizations.
Apache 2.0
[npm-image]: https://img.shields.io/npm/v/@blakeembrey/deque.svg?style=flat
[npm-url]: https://npmjs.org/package/@blakeembrey/deque
[downloads-image]: https://img.shields.io/npm/dm/@blakeembrey/deque.svg?style=flat
[downloads-url]: https://npmjs.org/package/@blakeembrey/deque
[travis-image]: https://img.shields.io/travis/blakeembrey/deque.svg?style=flat
[travis-url]: https://travis-ci.org/blakeembrey/deque
[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/deque.svg?style=flat
[coveralls-url]: https://coveralls.io/r/blakeembrey/deque?branch=master