加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何使用orderBy按角度最接近的匹配进行排序

发布时间:2020-12-17 17:25:40 所属栏目:安全 来源:网络整理
导读:在ng-repeat指令中处理很长的列表. 我有一个搜索框,我想按最接近的匹配进行筛选. 例如: 如果我有: 你好,你好吗? 你好,你今天过得怎么样? 你好兄弟 我搜索“你好” 我希望“你好兄弟”首先出现,因为它是远离搜索字符串的最少字符数. 解决方法 如果要使字
在ng-repeat指令中处理很长的列表.
我有一个搜索框,我想按最接近的匹配进行筛选.

例如:
如果我有:

>你好,你好吗?
>你好,你今天过得怎么样?
>你好兄弟

我搜索“你好”

我希望“你好兄弟”首先出现,因为它是远离搜索字符串的最少字符数.

解决方法

如果要使字符数更重要,可以按字符串长度排序.

orderBy: 'string.length'

Here是一个掠夺者的例子.哪个没有多大意义,但证明这是有效的.

您还可以查看filters并进行自定义排序.

以下是您可以做的一个小例子

app.filter('sortByLength',function() {

  return function(items) {
    items.sort(function (a,b) {    
      return (a.length > b.length ? 1 : -1);
    });
    return items;
  };
});

如果你想要,你可以将搜索字符串作为参数引入angularjs上的过滤器外观.更多信息
?here.

app.filter('sortByMatch',function() {
  return function(items,searchString) {
    var re = new RegExp("[" + searchString + "]","g"); 
    items.sort(function (a,b) { 

      if (!searchString) {
        return input;
      }
      var matchingCharsA = a.length - (a.match(re) || []).length; 
      var matchingCharsB = b.length - (b.match(re) || []).length;

      return (matchingCharsA > matchingCharsB ? 1 : -1);
    });
    return items;
  };
});

你可以像这样使用它.

ng-repeat="item in.... | sortByMatch: searchString

我希望这有帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读