Mnemonist
Fixed Deque
The FixedDeque is a fixed capacity double-ended queue (abbr. deque) that can be used both as a LIFO or FIFO list very efficiently.
For more information about the deque, you can head here.
Note that, contrary to the CircularBuffer, the FixedDeque will throw when overflowing capacity.
const FixedDeque = require('mnemonist/fixed-deque');
Constructor
The FixedDeque takes two arguments: a array class to use, and the desired capacity.
const deque = new FixedDeque(Array, 10);
// Using byte arrays
const deque = new FixedDeque(Int8Array, 10);
Static #.from
Alternatively, one can build a FixedDeque from an arbitrary JavaScript iterable likewise:
// Attempting the guess the given iterable's length/size
const deque = FixedDeque.from([1, 2, 3], Int8Array);
// Providing the desired capacity
const deque = FixedDeque.from([1, 2, 3], Int8Array, 10);
Members
Methods
Mutation
Read
Iteration
#.capacity
Maximum number of items the deque is able to store.
const deque = new FixedDeque(Array, 10);
deque.capacity
>>> 10
#.size
Number of items in the deque.
const deque = new FixedDeque(Array, 10);
deque.size
>>> 0
#.push
Append an item at the end of the deque.
Will throw if the deque’s capacity is exceeded.
O(1)
const deque = new FixedDeque(Array, 10);
deque.push(1);
#.unshift
Prepend an item at the beginning of the deque.
Will throw if the deque’s capacity is exceeded.
O(1)
const deque = new FixedDeque(Array, 10);
deque.unshift(1);
#.pop
Retrieve & remove the last item of the deque.
O(1)
const deque = new FixedDeque(Array, 10);
deque.push(1);
deque.push(2);
deque.pop();
>>> 2
#.shift
Retrieve & remove the first item of the deque.
O(1)
const deque = new FixedDeque(Array, 10);
deque.push(1);
deque.push(2);
deque.shift();
>>> 1
#.clear
Completely clears the deque.
O(1)
const deque = new FixedDeque(Array, 10);
deque.push(1);
deque.clear();
deque.toArray();
>>> []
#.peekFirst
Retrieves the first item of the deque.
O(1)
const deque = new FixedDeque(Array, 10);
deque.push(1);
deque.push(2);
deque.peekFirst();
>>> 1
#.peekLast
Retrieves the last item of the deque.
O(1)
const deque = new FixedDeque(Array, 10);
deque.push(1);
deque.push(2);
deque.peekLast();
>>> 2
#.forEach
Iterates over the deque’s values.
const deque = new FixedDeque(Array, 10);
deque.push(1);
deque.push(2);
deque.forEach((item, index, deque) => {
console.log(index, item);
});
#.toArray
Converts the deque into a JavaScript array.
Note that the resulting array will be instantiated using the provided class.
const deque = new FixedDeque(Array, 10);
deque.push(1);
deque.push(2);
deque.toArray();
>>> [1, 2]
#.values
Returns an iterator over the deque’s values.
const deque = FixedDeque.from([1, 2, 3], Array);
const iterator = deque.values();
iterator.next().value
>>> 1
#.entries
Returns an iterator over the deque’s entries.
const deque = FixedDeque.from([1, 2, 3], Array);
const iterator = deque.entries();
iterator.next().value
>>> [0, 1]
Iterable
Alternatively, you can iterate over a deque’s values using ES2015 for...of protocol:
const deque = FixedDeque.from([1, 2, 3], Array);
for (const item of deque) {
console.log(item);
}