【发布时间】:2014-11-24 21:43:37
【问题描述】:
我需要帮助。我正在制作字典之类的东西(但您自己填写)。我需要快速搜索其中的单词。我需要使用对象或数组(因为 JSON 不支持字典。有保存文件的选项)。我有这段代码,但是当数组中有很多单词时,恐怕它没有优化到快速搜索。请帮忙。
public function Search (string:String,section:String = Wordbook.NEWW):int
{
var str:String = string.toUpperCase();
for (i = 0; i < NewWords.length; i++)
{
if (NewWords[i].toUpperCase.indexOf(str) > -1)
{
return i;
}
}
return -1;//If not found
}
以及它应该如何工作的示例:(SearchTxt - 文本字段,用户应在此处输入他需要查找的单词;WB - Wordbook 类;WB.NewWords & WB.NewWordsT - 该类中的数组)
var index:int = WB.Search(SearchTxt.text,Wordbook.NEWW);
if(index>-1){
WordTxt.text = WB.NewWords[index];
TranslationTxt.text = WB.NewWordsT[index];
} else {
dispatchEvent(new EventWithMessage(EventWithMessage.ERROR,{error:"No match!"}));
}
【问题讨论】:
-
为什么
Dictionary会更快?它不包含任何特殊的搜索功能,它只是强制进行严格的相等测试 -
@CyanAngel 好的。谢谢你的智慧之珠,但也许你还有一颗,这对我有帮助吗? :)
-
添加一小部分您搜索的数据和您可能期望的搜索条件。我对搜索优化不抱任何期望,但这样的样本会让那些可能知道一些事情的人更容易
-
@CyanAngel 现在好点了吗?还是我误会了你?
-
不,我的意思是
WB.Words中的内容以及您希望SearchTxt.text中的内容的示例
标签: arrays performance actionscript-3 search