如何使用 Semantic UI 的本地搜索对搜索结果重新排序?

How do I reorder search results with Semantic UI's local search?

我有一个使用 Semantic 2.1 和哈希数组的本地搜索框。

[{ title: 'Andorra' , rank: 1 } , { title: 'United Arab Emirates', rank: 2 } , { title: 'Afghanistan' , rank: 3 } , { title: 'Antigua' , rank: 4 } ,...]

我希望搜索结果按照数组中散列的顺序排列。 例如,使用搜索字符串 Ar 搜索国家/地区,现在我得到

Armenia
Argentina
Aruba
Andorra
United Arab Emirates
American Samoa
Austria

但是我想显示

United Arab Emirates
Armenia
Argentina
...

有没有办法在不重写源代码的情况下做到这一点?

这是演示 fiddle 我设置:http://jsfiddle.net/zestly/ckxpvgm7/1/

作为奖励问题,谁能解释为什么美属萨摩亚被归还?

我知道的唯一方法是使用类似这样的方法覆盖 HTML 创建搜索功能的结果:

$.fn.search.settings.templates = {
  standard: function(response) {
   // Your own sorting logic here
   var sortedResults = response.results.sort(function(a, b) {
       if (a.title === 'United Arab Emirates' || b.title === 'United Arab Emirates')
           return 1;
       else if (a.rank > b.rank)
           return 1;
       else if (a.rank < b.rank)
           return -1;
       else
           return 0;
   });

   // Create the DOM as as it normally should be
   return $.map(sortedResults, function(item) {
     return $('<div>').append($('<a>').addClass('result').append(
       $('<div>').addClass('content').append(
         $('<div>').addClass('title').text(item.title)
       )
     )).html();
   });
  }
};

这是在将结果数组绘制到结果容器之前您最后一次访问结果数组。您可以使用您自己的排序逻辑重新排列它,然后建立一个结果 DOM 匹配通常返回的结果。