Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

queue-typed

zrwusa568MIT2.0.3TypeScript support: included

Queue data structure

queue, fifo, FIFO, lifo, LIFO, javascript, java script, JavaScript, js, typescript, type script, TypeScript, ts, job, work, queue, queue js, job queue, job scheduling, algorithm, concurrency, task queue, sorted, sorting, sort, ordered, data, structure, structures, data structure, datastructure, data-structure, data structures, datastructures, data-structures, in data structures, in data structure, DataStructure, DataStructures, traversal, iterate, Node.js, CommonJS, ES6, UMD, esmodule, java.util, c++ stl, c++ std, Python collections, System.Collections.Generic, STL, stl, util, collection, Collection, collections, Collections, q, linked list, array, enqueue, dequeue, push, shift, next, node, item, searching, performance, OOP, documentation, visualization

readme

NPM GitHub top language npm eslint npm bundle size npm bundle size npm

What

Brief

In the usual gig, we make do with Array.push and Array.shift to play Queue in JavaScript, but here's the kicker – native JavaScript Array isn't exactly Queue VIP. That shift move? It's a bit of a slow dance with a time complexity of linear time complexity O(n). When you're working with big data, you don't want to be caught slow-shifting. So, we roll up our sleeves and craft a Queue that's got a speedy constant time complexity O(1) Queue.enqueue(), a snappy O(1) Queue.dequeue(), and a lightning-fast O(1) Queue.getAt(). Yep, it's Queue-tastic!

Data StructureEnqueueDequeueAccessEnqueue & Dequeue 100000Access 100000
Queue TypedO(1)O(1)O(1)22.60ms10.60ms
JavaScript Native ArrayO(1)O(n)O(1)931.10ms8.60ms
Other QueueO(1)O(1)O(n)28.90ms17175.90ms

more data structures

This is a standalone Queue data structure from the data-structure-typed collection. If you wish to access more data structures or advanced features, you can transition to directly installing the complete data-structure-typed package

How

install

npm

npm i queue-typed --save

yarn

yarn add queue-typed

snippet

TS

import {Queue} from 'queue-typed';
// /* or if you prefer */ import {Queue} from 'queue-typed';

const queue = new Queue<number>();
for (let i = 0; i < magnitude; i++) {
    queue.enqueue(i);
}
for (let i = 0; i < magnitude; i++) {
    queue.dequeue();
}

for (let i = 0; i < magnitude; i++) {
    console.log(queue.getAt(i));        // 0, 1, 2, 3, ...
}

JS

const {Queue} = require('queue-typed');
// /* or if you prefer */ const {Queue} = require('queue-typed');

const queue = new Queue();
for (let i = 0; i < magnitude; i++) {
    queue.enqueue(i);
}
for (let i = 0; i < magnitude; i++) {
    queue.dequeue();
}

for (let i = 0; i < magnitude; i++) {
    console.log(queue.getAt(i));        // 0, 1, 2, 3, ...
}

Sliding Window using Queue

    const nums = [2, 3, 4, 1, 5];
    const k = 2;
    const queue = new Queue<number>();

    let maxSum = 0;
    let currentSum = 0;

    nums.forEach((num) => {
      queue.push(num);
      currentSum += num;

      if (queue.length > k) {
        currentSum -= queue.shift()!;
      }

      if (queue.length === k) {
        maxSum = Math.max(maxSum, currentSum);
      }
    });

    console.log(maxSum); // 7

Breadth-First Search (BFS) using Queue

    const graph: { [key in number]: number[] } = {
      1: [2, 3],
      2: [4, 5],
      3: [],
      4: [],
      5: []
    };

    const queue = new Queue<number>();
    const visited: number[] = [];

    queue.push(1);

    while (!queue.isEmpty()) {
      const node = queue.shift()!;
      if (!visited.includes(node)) {
        visited.push(node);
        graph[node].forEach(neighbor => queue.push(neighbor));
      }
    }

    console.log(visited); // [1, 2, 3, 4, 5]

API docs & Examples

API Docs

Live Examples

Examples Repository

Data Structures

Data Structure Unit Test Performance Test API Docs
Queue Queue

Standard library data structure comparison

Data Structure Typed C++ STL java.util Python collections
Queue<E> queue<T> Queue<E> -

Benchmark

queue
test nametime taken (ms)executions per secsample deviation
1,000,000 push39.9025.070.01
1,000,000 push & shift81.7912.230.00

Built-in classic algorithms

Algorithm Function Description Iteration Type

Software Engineering Design Standards

Principle Description
Practicality Follows ES6 and ESNext standards, offering unified and considerate optional parameters, and simplifies method names.
Extensibility Adheres to OOP (Object-Oriented Programming) principles, allowing inheritance for all data structures.
Modularization Includes data structure modularization and independent NPM packages.
Efficiency All methods provide time and space complexity, comparable to native JS performance.
Maintainability Follows open-source community development standards, complete documentation, continuous integration, and adheres to TDD (Test-Driven Development) patterns.
Testability Automated and customized unit testing, performance testing, and integration testing.
Portability Plans for porting to Java, Python, and C++, currently achieved to 80%.
Reusability Fully decoupled, minimized side effects, and adheres to OOP.
Security Carefully designed security for member variables and methods. Read-write separation. Data structure software does not need to consider other security aspects.
Scalability Data structure software does not involve load issues.