UNPKG

haha-dict-tree

Version:

因为最近常用到字典树,所以自己封装一个易用的字典树库。 代码量很少,90行,使用 generator 来遍历字典树,写起来很舒服。

61 lines (54 loc) 1.39 kB
'use strict'; 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, [ '你好啊', '你好', '你' ]); });