如何根据匹配的字母表顺序排序字符串列表?

时间:2013-05-15 08:26:13

标签: php jquery regex sorting preg-match

我不确定是否有其他人遇到过这个问题。 我有一个数组元素列表,需要在自动建议上显示。我最大的问题是我需要根据类别名称中的匹配字符串显示所有类别。

例如 - 如果我在搜索框中输入auto,它应该在自动建议上显示匹配的记录,如 -

Indus - > 自动 mation - >贡献
构造 - > 自动 mation - >行业
Indus - > Es 自动 mation - > TNB
Cal - > Thead auto - > Textile

应根据匹配的字母顺序排序。如果前3个字符与类别匹配,则它应该首先显示该类别,然后显示第二个匹配,最后一次出现。我在jquery中使用regx来显示匹配的字符串。我更喜欢在jquery else php中解决方案。

如果我得到一些解决方案,那将非常有用。

1 个答案:

答案 0 :(得分:0)

我使用这个绑定到按键:

jQuery('select.myClass').find('option').hide();
jQuery('select.myClass').find('option:hidden[value*="' + searchFor + '"]').show();

可能不是世界上效率最高的代码,但我针对一堆选项运行它,每个选项包含多达数百个选项,但尚未出现重大性能问题。 同样适用于其他任何事情,因为它所做的只是使用jQuery的*=选择器。

Here for *= selector或类似地here for :contains selector

然后你需要做的就是在jQuery中实现正确的排序是拾取许多jQuery排序插件中的一个(或使用native javascript sort function)并使用类似这样的函数排序:

var searchFor = 'foo';
function sortByPos(val1, val2)
{
  return (val1.indexOf(searchFor) > val2.indexOf(searchFor) ? +1 : -1);
}