我在Javascript中使用多维数组。 基本上我正在尝试使用多维数组将字符串的字母放入某种Trie(实际上是基数树)。
var data= [];
var word="test";
if (l=word[0]) {
if (!data[l]) {
data[l] = [];
}
}
if (l=word[1]) {
if (!data[word[0]][l]) {
data[word[0]][l] = [];
}
}
if (l=word[2]) {
if (!data[word[0]][word[1]][l]) {
data[word[0]][word[1]][l] = [];
}
}
if (l=word[3]) {
if (!data[word[0]][word[1]][word[2]][l]) {
data[word[0]][word[1]][word[2]][l] = [];
}
}
console.log(data);
请参阅小提琴:http://jsfiddle.net/TN28c/
我想知道这是否可以自动化(不使用eval()
)来处理任意长度的单词。我知道Javascript没有指针/引用,这是我可能在PHP中使用的,但是可能还有其他方法吗?
我不是在寻找一个trie-library,我已经找到了其中一些,但我只是想知道以上是否可以在Javascript中动态执行。
答案 0 :(得分:1)
var word= 'tree';
var data = [];
var obj = data;
for (var i = 0; i < word.length; i++) {
if (!obj[word[i]]) {
obj[word[i]] = []
}
obj = obj[word[i]];
}
console.log(data);
答案 1 :(得分:0)
这是一个简单的递归版本作为示例。当然,你也可以迭代地做到这一点。
function trieAdd(trie, word) {
function addWorker(trie, position) {
var l = trie[word[position]];
if (!l)
trie[word[position]] = l = [];
if (position < word.length - 1)
addWorker(l, position + 1);
}
addWorker(trie, 0);
return trie;
}
trieAdd([], "test");