0.0.2 • Published 7 years ago

haha-dict-tree v0.0.2

Weekly downloads
-
License
MIT
Repository
-
Last release
7 years ago

#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