haha-dict-tree
v0.0.2
Published
因为最近常用到字典树,所以自己封装一个易用的字典树库。 代码量很少,90行,使用 generator 来遍历字典树,写起来很舒服。
Downloads
1
Readme
#README
因为最近常用到字典树,所以自己封装一个易用的字典树库。 代码量很少,90行,使用 generator 来遍历字典树,写起来很舒服。
install
基本上我写的库如果有重名的,都会加上 haha,😆。
npm install haha-dict-tree --save
quick start
实现一个按搜索热度排序拥有相同前缀的功能。
const Tree = require('haha-dict-tree');
const t = new Tree();
t.addWord('你');
t.addWord('你好');// 每次搜索添加一次
t.addWord('你好');
t.addWord('你好啊');
t.addWord('你好啊');
t.addWord('你好啊');
t.addWord('测试');
t.addWord('测试');
t.addWord('测试');
const result = [];
for (let n of t.findAfter('你')) {
result.push(n);
}
result.sort((a, b) => b.number - a.number).map(n => console.log(n.word, n.number));
// 你好啊 4
// 你好 3
// 你 2
API
Tree
const Tree = require('haha-dict-tree');
const t = new Tree();
Node
- char 节点字符
- word 节点字符串
- deep 节点深度
- number 节点热度
const Tree = require('haha-dict-tree');
const t = new Tree();
t.addWord('12');
for(let n of t.findAfter('1')) {
console.log(n);
}
// Node {
// char: '2',
// word: '12',
// isWord: true,
// deep: 2,
// number: 1,
// nextMap: Map {} }
Tree.addWord(word)
- word String
添加字符串
const Tree = require('haha-dict-tree');
const t = new Tree();
t.addWord('123');
Tree.findAllRaw(word)
- word String
查询字符串,返回遍历路径。 路径长度比查询字符串小时候,按照字符串查询。 路径长度大于字符串长度的时候,广度遍历接下来的节点。
const Tree = require('haha-dict-tree');
const t = new Tree();
t.addWord('1234');
for(let n of t.findAllRaw('1')) {
console.log(n.word);
}
// result:
// 1
// 12
// 123
// 1234
Tree.findAll(word)
- word String
对 findAllRaw 包装了一层,只返回拥有添加字符串的节点,而不是所有经过节点。
const Tree = require('haha-dict-tree');
const t = new Tree();
t.addWord('1234');
t.addWord('12');
for(let n of t.findAllRaw('1')) {
console.log(n.word);
}
// result:
// 12
// 1234
Tree.findBefore(word)
- word String
对 findAll包装了一层,返回长度小于等于查询字符串的完整字符串节点。
const Tree = require('haha-dict-tree');
const t = new Tree();
t.addWord('1234');
t.addWord('12');
t.addWord('1');
for(let n of t.findAllRaw('123')) {
console.log(n.word);
}
// result:
// 1
// 12
Tree.findBefore(word)
- word String
对 findAll包装了一层,返回长度大于等于查询字符串的完整字符串节点。
const Tree = require('haha-dict-tree');
const t = new Tree();
t.addWord('12345');
t.addWord('1234');
t.addWord('12');
t.addWord('1');
for(let n of t.findAllRaw('123')) {
console.log(n.word);
}
// result:
// 1234
// 12345