我有以下代碼嘗試在 Map 中設定值:
class Trie {
constructor () {
this.trie = new Map()
}
insert(word) {
let current = this.trie
for (let alpha of word) {
if (!current.has(alpha)) current.set(alpha, [])
current = current.get(alpha)
}
current.word = word
}
}
let trie = new Trie()
trie.insert('test')
console.log(trie.trie)
當我嘗試運行它時,出現錯誤.has is not a function。我在這里缺少什么?
uj5u.com熱心網友回復:
您在current回圈內重新分配給非 Map 值,因此在后續迭代current.has中將不起作用。聽起來您需要將 the[]改為 a new Map。
class Trie {
constructor () {
this.trie = new Map()
}
insert(word) {
let current = this.trie
for (let alpha of word) {
if (!current.has(alpha)) current.set(alpha, new Map())
current = current.get(alpha)
}
current.word = word
}
}
let trie = new Trie()
trie.insert('test')
console.log([...trie.trie])

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310809.html
標籤:javascript 哎呀 ecmascript-6 哈希图 es6级
