【发布时间】:2013-11-14 00:59:51
【问题描述】:
我正在玩 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 库,我已经找到了其中的一些,但我只是想知道是否可以在 Javascript 中动态执行上述操作。
【问题讨论】:
-
一切在 JavaScript 中都是动态的。为什么不可能?您在发布的代码中没有看到
for循环模式吗? (对不起,如果这看起来很苛刻;我不是故意的。) -
一个离题的技术说明:PHP 也没有指针。它有references,表面上相似,但有一些重要的区别。
-
字符串
test的预期输出是什么?您生成的格式错误的数组对我来说似乎奇怪。 -
对于 OP,wikipedia page for trie 的算法看起来很容易转换为 JS。
-
@Dylan 你需要两个循环。外层将通过单词进行,然后在每个级别您都必须通过数组。可能做一个递归版本会容易得多。
标签: javascript multidimensional-array trie