js-heap is a flexible, value-agnostic heap for Javascript. It provides a simple interface and allows users to define custom comparison functions for heap sorting.
npm install js-heap
To get started, require
js-heap, and create a new Heap instance:
var Heap = require('js-heap');
var h = new Heap(function(a,b) {
return a - b;
});
The comparison function behaves like a sort function you would pass into a standard Javascript Array.
The default comparison function is the one shown above - the heap is organized so that the highest numeric priority is at the top.
A node in the heap can be whatever you'd like:
// Example node
var node = {
priority: 1,
value: 'ABCD',
}
h.push(node);
You can create a custom sort function to compare arbitrary nodes:
var h = new Heap(function(a, b) {
return a.priority - b.priority;
});
##.push(node) Pushes a new node onto the heap. A "node" value can be a primitive or an arbitrary Javascript object. Pushed nodes are sorted based on the provided sort function.
h.push(1);
h.push(2);
...
##.pop()
Removes and returns the top node in the heap. If the heap is empty, null
is returned.
// Returns 2
h.pop();
// Returns 1
h.pop();
// Returns null
h.pop();
...
##.peek() Returns the top node in the heap. The node remains on top of the heap.
h.push(1);
// Returns 1
h.peek();
// Still returns 1
h.peek();
...
##.isEmpty()
Returns true
if the heap is empty.
##.length A read-only length property representing the number of nodes in the heap.