javascript - add 不是函数
问题描述
我不知道为什么会出现此错误,我正在使用来自 github 的 trie.js 并尝试使用 add 函数,但它说 trie.add 不是函数。
var longestWord = function(words) {
console.log('test');
let trie = new Trie();
trie.add("test");
console.log(trie);
};
longestWord('testing');
function Trie() {
this.head = {
key : ''
, children: {}
}
}
Trie.prototype.add = function(key) {
var curNode = this.head
, newNode = null
, curChar = key.slice(0,1);
key = key.slice(1);
while(typeof curNode.children[curChar] !== "undefined"
&& curChar.length > 0){
curNode = curNode.children[curChar];
curChar = key.slice(0,1);
key = key.slice(1);
}
while(curChar.length > 0) {
newNode = {
key : curChar
, value : key.length === 0 ? null : undefined
, children : {}
};
curNode.children[curChar] = newNode;
curNode = newNode;
curChar = key.slice(0,1);
key = key.slice(1);
}
};
Trie.prototype.search = function(key) {
var curNode = this.head
, curChar = key.slice(0,1)
, d = 0;
key = key.slice(1);
while(typeof curNode.children[curChar] !== "undefined" && curChar.length > 0){
curNode = curNode.children[curChar];
curChar = key.slice(0,1);
key = key.slice(1);
d += 1;
}
if (curNode.value === null && key.length === 0) {
return d;
} else {
return -1;
}
}
Trie.prototype.remove = function(key) {
var d = this.search(key);
if (d > -1){
removeH(this.head, key, d);
}
}
function removeH(node, key, depth) {
if (depth === 0 && Object.keys(node.children).length === 0){
return true;
}
var curChar = key.slice(0,1);
if (removeH(node.children[curChar], key.slice(1), depth-1)) {
delete node.children[curChar];
if (Object.keys(node.children).length === 0) {
return true;
} else {
return false;
}
} else {
return false;
}
}
我自己添加的所有代码都在函数 Trie() 之前。其余部分来自此 github 存储库:https ://gist.github.com/alexandervasyuk/b12c3d2c306539decb2a#file-trie-js
解决方案
在向它添加原型之前,您正在调用 new Trie。
这是工作版本:
https://jsbin.com/jokekuw/3/edit?js,输出
var longestWord = function(words) {
console.log('test');
let trie = new Trie();
trie.add("test");
};
function Trie() {
this.head = {
key : ''
, children: {}
}
}
推荐阅读
- mongodb - mongoose populate 在本地工作,但不适用于 aws
- php - 如何显示 PHP XML-RPC 调用的返回值?
- python - Python:递归打印树
- chisel - 凿子捆绑连接和类型安全
- vb.net - 在 vb.net 中加载带有 100 个空行的 DataGridView,其中行号为
- r - ggplot 地图图例显示不一致
- node.js - 节点调度器重复
- django - Django-Channels AsyncConsumer 不工作
- optimization - 找到得分最高的非重叠序列的子集
- typescript - 为什么我可以使用临时变量来解决 TypeScript 的对象字面量赋值约束?