javascriptで優先度付きqueue(priority queue)のライブラリ(メモ)
npmでpriority queueを検索するとかなりの数のライブラリがある。
どれが良いとか悪いとかは、メンテナンス具合とdownload数等で判断するようだ。
しかし正直どれが良いか判断できない。
差し当たり早そうなfastpriorityqueueを利用することにした。
動作サンプル
サンプルコードがpriority key のみを使ったもので、素人には実践でどう使うのか分かりづらい。
別なサンプルを書いて動作をみる。
var FastPriorityQueue = require("fastpriorityqueue"); class MyClass { constructor(priority, data) { this.priority = priority; this.data = data; } } const a = new MyClass(10, "test"); const b = new MyClass(20, "test test"); const c = new MyClass(30, "test test test"); const d = new MyClass(40, "test test test test"); var x = new FastPriorityQueue(function (a, b) { return a.priority > b.priority }); // 昇順降順を切り替えられる x.add(a); x.add(b); x.add(c); x.add(d); while (!x.isEmpty()) { console.log(x.poll()); // will print // MyClass { priority: 40, data: 'test test test test' } // MyClass { priority: 30, data: 'test test test' } // MyClass { priority: 20, data: 'test test' } // MyClass { priority: 10, data: 'test' } }
その他
.min化されてないのでクライアントブラウザ動作させるなどの場合は最適化が必要かも。