Open jvonmitchell opened 10 years ago
I'm fairly sure the underlying nodes
array is exposed as heap.nodes
.
So you could use normal array functions like every
to do any inspection you would like:
var greaterThan = function(value, node){
if(typeof node == "undefined") return greaterThan.bind(null, value)
return node > value
}
heap.nodes
.every(greaterThan(5)) //=> ( true || false )
You could substitute greaterThan
for any function you wish.
Hi,
It would make this library really useful if we could get a list of items less than a certain value or if there were a way to extrapolate that data without mutating the heap.
Here is a function I made which you are welcome to use.
Heap.prototype.peekTo = function(value,cmp) { var c; if(cmp===null) { cmp=this.cmp; } for(c=0;c<this.nodes.length;++c) { if(cmp(value,this.nodes[c]) <= 0) { break; } } return this.nodes.slice(0,c); }
There is an option to provide a compare function in case we need to compare something like {someValue:....} and value without creating a new instance of the objects used in the heap.