haha-dict-tree
Version:
因为最近常用到字典树,所以自己封装一个易用的字典树库。 代码量很少,90行,使用 generator 来遍历字典树,写起来很舒服。
61 lines (54 loc) • 1.39 kB
JavaScript
;
const test = require('ava');
const Tree = require('../');
const tree = new Tree();
tree.addWord('12');
tree.addWord('123');
tree.addWord('1234');
tree.addWord('12345');
test('findAllRaw test', t => {
const r = [];
for (const n of tree.findAllRaw('123')) {
r.push(n.word);
}
t.deepEqual(r, [ '1', '12', '123', '1234', '12345' ]);
});
test('findAll test', t => {
const r = [];
for (const n of tree.findAll('123')) {
r.push(n.word);
}
t.deepEqual(r, [ '12', '123', '1234', '12345' ]);
});
test('findBefore test', t => {
const r = [];
for (const n of tree.findBefore('123')) {
r.push(n.word);
}
t.deepEqual(r, [ '12', '123' ]);
});
test('findAfter test', t => {
const r = [];
for (const n of tree.findAfter('123')) {
r.push(n.word);
}
t.deepEqual(r, [ '123', '1234', '12345' ]);
});
test('sort by number test', t => {
const tree = new Tree();
tree.addWord('你');
tree.addWord('你好');// 每次搜索添加一次
tree.addWord('你好');
tree.addWord('你好啊');
tree.addWord('你好啊');
tree.addWord('你好啊');
tree.addWord('测试');
tree.addWord('测试');
tree.addWord('测试');
const result = [];
for (let n of tree.findAfter('你')) {
result.push(n);
}
const r = result.sort((a, b) => b.number - a.number).map(n => n.word);
t.deepEqual(r, [ '你好啊', '你好', '你' ]);
});