sindresorhus/yocto-queue

Tiny queue data structure

439

stars

17

commits

JavaScript

primary language

Nov 11, 2025

updated

algorithms-and-data-structures
npm-package
queue
queue-data-stucture

README

yocto-queue

Tiny queue data structure

You should use this package instead of an array if you do a lot of Array#push() and Array#shift() on large arrays, since Array#shift() has linear time complexity O(n) while Queue#dequeue() has constant time complexity O(1). That makes a huge difference for large arrays.

A queue is an ordered list of elements where an element is inserted at the end of the queue and is removed from the front of the queue. A queue works based on the first-in, first-out (FIFO) principle.

Install

npm install yocto-queue

Usage

import Queue from 'yocto-queue';

const queue = new Queue();

queue.enqueue('🦄');
queue.enqueue('🌈');

console.log(queue.size);
//=> 2

console.log(...queue);
//=> '🦄 🌈'

console.log(queue.dequeue());
//=> '🦄'

console.log(queue.dequeue());
//=> '🌈'

API

queue = new Queue()

The instance is an Iterable, which means you can iterate over the queue front to back with a “for…of” loop. Using the iterator will not remove the items from the queue. If you want that, use drain() instead.

You can also use spreading to convert the queue to an array. Don't do this unless you really need to though, since it's slow.

.enqueue(value)

Add a value to the queue.

.dequeue()

Remove the next value in the queue.

Returns the removed value or undefined if the queue is empty.

.peek()

Get the next value in the queue without removing it.

Returns the value or undefined if the queue is empty.

.drain()

Returns an iterator that dequeues items as you consume it.

This allows you to empty the queue while processing its items.

If you want to not remove items as you consume it, use the Queue object as an iterator.

.clear()

Clear the queue.

.size

The size of the queue.

  • quick-lru - Simple “Least Recently Used” (LRU) cache

Contributors

sindresorhus

14 commits

Richienb

1 commits

vadzim

1 commits

victor141516

1 commits

sindresorhus/yocto-queue

Tiny queue data structure

439

stars

17

commits

JavaScript

primary language

Nov 11, 2025

updated

algorithms-and-data-structures
npm-package
queue
queue-data-stucture

README

yocto-queue

Tiny queue data structure

You should use this package instead of an array if you do a lot of Array#push() and Array#shift() on large arrays, since Array#shift() has linear time complexity O(n) while Queue#dequeue() has constant time complexity O(1). That makes a huge difference for large arrays.

A queue is an ordered list of elements where an element is inserted at the end of the queue and is removed from the front of the queue. A queue works based on the first-in, first-out (FIFO) principle.

Install

npm install yocto-queue

Usage

import Queue from 'yocto-queue';

const queue = new Queue();

queue.enqueue('🦄');
queue.enqueue('🌈');

console.log(queue.size);
//=> 2

console.log(...queue);
//=> '🦄 🌈'

console.log(queue.dequeue());
//=> '🦄'

console.log(queue.dequeue());
//=> '🌈'

API

queue = new Queue()

The instance is an Iterable, which means you can iterate over the queue front to back with a “for…of” loop. Using the iterator will not remove the items from the queue. If you want that, use drain() instead.

You can also use spreading to convert the queue to an array. Don't do this unless you really need to though, since it's slow.

.enqueue(value)

Add a value to the queue.

.dequeue()

Remove the next value in the queue.

Returns the removed value or undefined if the queue is empty.

.peek()

Get the next value in the queue without removing it.

Returns the value or undefined if the queue is empty.

.drain()

Returns an iterator that dequeues items as you consume it.

This allows you to empty the queue while processing its items.

If you want to not remove items as you consume it, use the Queue object as an iterator.

.clear()

Clear the queue.

.size

The size of the queue.

  • quick-lru - Simple “Least Recently Used” (LRU) cache

Contributors

sindresorhus

14 commits

Richienb

1 commits

vadzim

1 commits

victor141516

1 commits

Languages

JavaScript

95.1%

TypeScript

4.9%