-
Notifications
You must be signed in to change notification settings - Fork 1
API
const { BTree, GLIB_VERSION } = require("node-btree");
GLIB_VERSION.MAJOR
// 2
GLIB_VERSION.MINOR
// 74
GLIB_VERSION.PATCH
// 2
GLIB_VERSION..hasGTreeNode()
// true if version of GLib > 2.68
Takes one argument - comparator function. Should be like qsort() C function from libc: Required for internal keys comparison operations.
function comparator(a, b) {
if (a > b) {
return 1;
}
else if (a < b) {
return -1;
}
else {
return 0;
}
}
const btree = new BTree(comparator);
const btree = BTree(comparator);
Create new instance from some iterable objects.
const map = new Map();
map.set(10, "10");
map.set(30, "30");
map.set(80, "80");
map.set(20, "20");
map.set(50, "50");
const btree = BTree.from(comparator, map);
const array = [
// [key, value]
["10", 10],
["30", 30],
["20", 20],
["50", 50],
["40", { number: 40, string: "40" }],
];
const btree = BTree.from(comparator, array);
const array = [
{ key: "20", value: 20 },
{ key: "30", value: 30 },
{ key: "10", value: 10 },
{ key: "50", value: 50 },
{ key: "40", value: { number: 40, string: "40" } },
];
const btree = BTree.from(comparator, array);
const array = [
{ key: "20", value: 20 },
["30", 30],
{ key: "10", value: 10 },
["50", 50],
{ key: "40", value: { number: 40, string: "40" } },
];
const btree = BTree.from(comparator, array);
function* generator() {
for (let i = 0; i < 100; i++) {
yield {
key: i,
value: `${i}`
};
}
}
const btree = BTree.from(comparator, generator());
Tree nodes count.
const btree = new BTree(comparator);
btree.set("50", 50);
btree.set("30", 30);
btree.set("15", 150);
btree.size
// 3
Binary tree height.
const btree = new BTree(comparator);
btree.set("50", 50);
btree.set("30", 30);
btree.set("15", 150);
btree.height
// 2
const btree = new BTree(comparator);
const key = "key-10";
const value = { some: "data" };
btree.set(key, value);
const btree = new BTree(comparator);
const key = "key-10";
const value = btree.get(key);
const btree = new BTree(comparator);
btree.set("50", 50);
btree.set("30", 30);
btree.has("30");
// true
As: MDN: Map.prototype.delete()
As: MDN: Map.prototype.clear()
As: MDN: Map.prototype.forEach()
GLib >= 2.68 only
As: MDN: Map.prototype.values()
GLib >= 2.68 only
GLib >= 2.68 only
As: MDN: Map.prototype.entries()
GLib >= 2.68 only
As: [MDN: Map.prototype@@iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/@@iterator)
Almost like: MDN: Array.prototype.map()
Almost like: MDN: Array.prototype.reduce()
Almost like: MDN: Array.prototype.filter()
btree.forEachReverse((val, key, idx, reverseIdx) => {
// do something
}, cbThis);
GLib >= 2.68 only
btree.last();
// { key, value }
GLib >= 2.68 only
btree.first();
// { key, value }
GLib >= 2.68 only
const btree = {
{ key: 10, value: 100 }
{ key: 30, value: 300 };
{ key: 40, value: 400 };
{ key: 45, value: 450 };
{ key: 50, value: 500 };
};
btree.before(40);
// { key: 10, value: 100 }
// { key: 30, value: 300 };
// { key: 40, value: 400 };
btree.before(40, true);
// { key: 10, value: 100 }
// { key: 30, value: 300 };
btree.before(35); // 35 not exists
// Exception
GLib >= 2.68 only
const btree = {
{ key: 10, value: 100 }
{ key: 30, value: 300 }
{ key: 40, value: 400 }
{ key: 45, value: 450 }
{ key: 50, value: 500 }
};
btree.after(40);
// { key: 40, value: 400 };
// { key: 45, value: 450 };
// { key: 50, value: 500 };
btree.after(40, true);
// { key: 45, value: 450 };
// { key: 50, value: 500 };
btree.after(35); // 35 not exists
// Exception
GLib >= 2.68 only
const btree = {
{ key: 10, value: 100 }
{ key: 30, value: 300 }
{ key: 40, value: 400 }
{ key: 45, value: 450 }
{ key: 50, value: 500 }
};
btree.between(30, 45);
// { key: 30, value: 300 }
// { key: 40, value: 400 }
// { key: 45, value: 450 }
btree.between(30, 45, true);
// { key: 40, value: 400 }
btree.between(35, 45); // 35 or 45 not exists
// Exception
btree.between(45, 30);
// { key: 30, value: 300 }
// { key: 40, value: 400 }
// { key: 45, value: 450 }