【问题标题】:How to order list of string based on matching alphabets occurrence?如何根据匹配的字母出现排序字符串列表?
【发布时间】:2013-05-09 17:40:54
【问题描述】:

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

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

Indus -> Automation -> 贡献
建筑 -> 自动化 -> 工业
工业 -> Es自动mation -> TNB
Cal -> Theadauto->纺织

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

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

【问题讨论】:

  • 能否包含返回结果的代码?您应该能够根据匹配字符串的索引(位置)对其进行排序。
  • 你能分享给定数组及其元素的结构吗?
  • 如果我键入“ead”关键字,则数组形式如下 -
    数组([0] => stdClass 对象([search_id] => 7878 [searched_string] => 液压猫头)[1 ] => stdClass 对象 ( [search_id] => 6711 [searched_string] => 井口 - 圣诞树) [2] => stdClass 对象 ( [search_id] => 7853 [searched_string] => Lead ) [3] => ( [ search_id] => 8853 [searched_string] => Eads Company ) ) Eads 公司应该首先显示

标签: php jquery regex sorting preg-match


【解决方案1】:

我用这个绑定到按键:

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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多