1.0.7 • Published 2 years ago

@nermin99/priorityqueue v1.0.7

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

A very simple and lightweight Javascript Priority Queue, based on this article.

Focused on functionality rather than performance.

Works with both ES Modules and CommonJS.

Installation

npm i @nermin99/priorityqueue

Import

import { PriorityQueue } from '@nermin99/priorityqueue'

or

const { PriorityQueue } = require('@nermin99/priorityqueue')

Basic Usage

const pq = new PriorityQueue()

pq.enqueue(1, 30)
pq.enqueue(2, 10)
pq.enqueue('x,y', 20)

pq.dequeue() // { key: 2, priority: 10 }
pq.front() // { key: 'x,y', priority: 20 }
pq.rear() // { key: 1, priority: 30 }

API Reference

.enqueue(key, priority)

Adds an element with a given key and priority to the queue.

pq.enqueue(1, 20)
pq.enqueue('x,y', 10)

pq // [{key: 'x,y', priority: 10}, {key: 1, priority: 20}]

.dequeue()

Removes the highest priority element from the queue and returns it.

pq.enqueue(1, 20)
pq.enqueue('x,y', 10)

const element = pq.dequeue()
element // {key: 'x,y', priority: 10}

.updatePriority(key, newPriority)

Updates the priority of an existing element in the queue.

pq.enqueue(1, 20)
pq.enqueue('x,y', 10)

pq.updatePriority(1, 5)
pq // [{key: 1, priority: 5}, {key: 'x,y', priority: 10}]

.front()

Returns the highest priority element in the queue without removing it.

pq.enqueue(1, 20)
pq.enqueue('x,y', 10)

pq.front() // {key: 'x,y', priority: 10}
pq // [{key: 'x,y', priority: 10}, {key: 1, priority: 20}]

.rear()

Returns the lowest priority element in the queue without removing it.

pq.enqueue(1, 20)
pq.enqueue('x,y', 10)

pq.rear() // {key: 1, priority: 20}
pq // [{key: 'x,y', priority: 10}, {key: 1, priority: 20}]

.isEmpty()

Returns true if the queue is empty.

pq.enqueue(1, 20)
pq.dequeue()

pq.isEmpty() // true

.entries()

Returns an array of the queue key/priority-pairs ordered by priority.

pq.enqueue(1, 20)
pq.enqueue('x,y', 10)

pq.entries() // [{key: 'x,y', priority: 10}, {key: 1, priority: 20}]

.keys()

Returns an array of the queue keys ordered by priority.

pq.enqueue(1, 20)
pq.enqueue('x,y', 10)

pq.keys() // ['x,y', 1]

.priorities()

Returns an array of the queue priorities ordered by priority.

pq.enqueue(1, 20)
pq.enqueue('x,y', 10)

pq.entries() // [10, 20]
1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago