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


How to order list of string based on matching alphabets occurrence?

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

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

Indus -> Auto tion -> Contribution
建筑-> 汽车建筑->工业
Indus -> Esautomation -> TNB
Cal -> headauto>Textile

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

我使用这个绑定键:

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

可能不是世界上最有效的代码,但我在一堆选择中运行它,每个选择包含数百个选项,并且还没有出现主要的性能问题。同样的将适用于其他任何东西,因为它所做的是使用jQuery的*=选择器。

这里for *= selector或者类似的这里for:contains selector

要在jQuery中实现正确的排序,你所需要做的就是选择一个jQuery排序插件(或使用原生javascript排序函数),并使用像这样的函数进行排序:

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