@warren-bank/node-sortedlist
v1.0.5
Published
sorted list
Downloads
23
Readme
SortedList
CommonJS module: sorted list that uses a binary search algorithm for search and insertion
Install
npm install --save @warren-bank/node-sortedlist
Usage
// sort number
var list = SortedList.create();
list.insert(13, 2, 9, 8, 0);
console.log(list.toArray()); // [0,2,8,9,13]
// sort string
var arr = ["foo", "bar", "hoge"];
var strList = SortedList.create({
compare: "string"
}, arr);
console.log(strList.toArray()); // ["bar", "foo", "hoge"]
// SortedList is not Array
console.assert(!Array.isArray(list));
// SortedList is instanceof Array
console.assert(list instanceof Array);
// SortedList extends Array
console.assert(list[2], 8);
console.assert(list.length, 5);
console.assert(list.pop(), 13);
// register an already filtered array
var list = SortedList.create({ resume: true }, [0,1,2,3,4]);
See the tests for more usage examples.
API Documentation
- SortedList.create(options, arr)
- sortedList.insertOne(val)
- sortedList.insert(val1, val2, ...)
- sortedList.remove(pos)
- sortedList.refilter(debounce_ms)
- sortedList.unique(createNew)
- sortedList.bsearch(val)
- sortedList.key(val)
- sortedList.keys(val)
- sortedList.toArray()
SortedList.create(options, arr)
create an instance of SortedList.
options is option object as follows.
arr is a initial value. All elements are shallowly copied.
Returns an instance of SortedList.
sortedList.insertOne(val)
Inserts val to the list.
Returns inserted position if succeeded, false if failed.
sortedList.insert(val1, val2, ...)
Inserts val1 val2, ... to the list.
Returns list of the result of executing insertOne(val).
console.log(SortedList.create().insert(3,1,2,4,5));
// [0,0,1,3,4]
sortedList.remove(pos)
Removes a value in the position pos.
Returns this.
sortedList.refilter(debounce_ms)
If options.filter
is not defined, then nothing is done.
If less time than debounce_ms
has ellapsed since the last time the list was refiltered, then nothing is done.
Iterates list and re-applies options.filter
to each element.
If an element no-longer passes the filter, then it is removed from the list.
Returns an ordered Array of filtered elements.
sortedList.unique(createNew)
Make the list unique. If createNew is true, returns a new array.
Otherwise, duplicated elements are internally removed, and this method returns this.
sortedList.bsearch(val)
Executes binary search with the given val. Returns the position before insertion.
var list = SortedList.create([1,2,4,6,10]);
console.log(list.bsearch(4)); // 2
console.log(list.bsearch(5)); // 2
console.log(list.bsearch(0)); // -1
console.log(list.bsearch(12)); // 4
sortedList.key(val)
If the given val exists, returns the first position.
Otherwise, returns null.
var list = SortedList.create([1,2,4,4,4,6,10]);
console.log(list.key(10)); // 6
console.log(list.key(4)); // 2
console.log(list.key(5)); // null
console.log(list.key(1)); // 0
sortedList.keys(val)
If the given val exists, returns an array of all the positions with val.
Otherwise, returns null.
var list = SortedList.create([1,2,4,4,4,6,10]);
console.log(list.keys(10)); // [6]
console.log(list.keys(4)); // [2, 3, 4]
console.log(list.keys(5)); // null
console.log(list.keys(1)); // [0]
sortedList.toArray()
Creates a new array with this list.
SortedList extends Array
As SortedList extends Array, we can use every method in Array.
var list = SortedList.create([1,2,4,6,10]);
console.log(list[2]) // 4
list.forEach(function(currentValue, index, list) {
// ...
});
var newArr = list.map(function(currentValue, index, list) {
// ...
});
Be careful of these differences.
Array.isArray(SortedList.create()) // false
(SortedList.create()) instanceof Array // true