【发布时间】:2011-07-28 11:09:10
【问题描述】:
我想要一些类似于 Mysql 的数据排序的东西,但是在 jquery 中。我有一个输入和一个选择标签,就像这样 -
我希望根据输入文本的值对选择选项进行过滤和排序。
- 过滤 OR 逻辑应用于输入文本和所有要保留的至少包含一个单词的选项
- 排序/分组然后按匹配数对剩余选项进行排序,使得包含输入中所有单词的选项显示在顶部,然后是那些少一个单词的选项,依此类推。以下仅为示例,可能不准确 -
我已经完成了过滤部分的逻辑。现在是排序部分,我不知道该怎么做。
举个例子,说输入文本贴出一串 5 个单词。我不知道 jQuery 中是否有类似于 Mysql 的 order by 可以返回排序选项。所以,我的逻辑是这样的(伪代码)-
var numberOfWords;
sortedOptions = new Array();
for(cnt=numberOfWords; cnt>0; cnt --)
{
find options containing exactly those many words
append them to array sortedOptions
}
现在考虑 numberOfWords = 5 和 cnt=3 的情况。 3 个单词有很多可能的组合,我需要检查这些组合以准备具有 3 个单词匹配的选项。这很好,但是当字数增加时,代码的时间复杂度又如何呢?有没有更好的优化方式?
请注意 - 这种检查可能需要在用户输入时进行(在每个按键上),并且我不能如此频繁地访问后端数据库。我还没有找到任何用于相同目的的现成插件。请检查我之前关于此的问题Any jquery 1.3 compatible plugin to filter dropdown using user text input plus grouping based on number of input strings matched。如果您知道任何可以解决问题的插件,请在此处发布。但无论如何都期待这个问题的解决方案。
谢谢
【问题讨论】:
标签: javascript jquery sorting options