我可以配置默认的角度过滤器以显示字符串,以便以搜索词开头的字符串排在第一位
Can I configure the default angular filter to display strings so that those that start with the search term come first?
在我的项目中,我们显示一个巨大的字符串列表(有时是 17,000+),带有一个输入框,用于使用过滤器对列表进行配对。我一直在使用 angular 的默认过滤器,直到有人要求我进行排序,以便以搜索查询开头的字符串出现在仅包含它的单词之前。
假设我有一个字符串数组 $scope.array = ["aaa","abb","abc","bad","bcd","cool","cold"]
现在,如果我使用query string 'c'
过滤,将显示的内容将按该顺序'abc','bcd,'cool','cold'
。然而,当大多数人开始使用"c"进行搜索时,他们可能希望看到"酷"和"冷"首先出现。我希望数组是'cool','cold','abc',bcd
的(或者如果按字母排序是包的一部分,则可能是冷然后很酷)我对编写自己的过滤器持谨慎态度,因为我宁愿对如此大的数据集合使用久经考验的东西。
有没有办法在不编写自己的自定义过滤器的情况下实现这一点?
它似乎足够通用的功能,应该有一个配置,或者可能是一个我可以从 github 获取的通用过滤器?
我认为使用角度顺序与一个函数一起使用,该函数检查字符串是否以 C 开头并返回正确的 asc 值,它会满足您的需求。问题是它在按起始字符排序后会做什么,它是否返回数组的当前序数,不知道这对你是否重要。
一些伪:
$scope.vm.filter = 'c'
$scope.orderByStartsWith = function(item) {
return item.startsWith($scope.vm.filter) ? 0 : 1;
}
<li ng-repeat="item in array | filter:vm.filter | orderBy:orderByStartsWith" >{{item}}</li>
我希望角度能允许你按函数将更多的参数传递到顺序中。
相关文章:
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- javascript中的字符串搜索无法找到当前字符串
- Javascript中与区域设置无关的字符串搜索
- 使用变量而不是静态字符串搜索数组
- 为什么字符串搜索的参数表现得像Regex
- Javascript:字符串搜索正则表达式,从字符串的末尾开始
- 不区分大小写的字符串搜索不起作用
- jquery移动字符串搜索页面文本
- 基于字符串搜索的简单jquery查找和显示无法使其工作
- javascript兼容chrome、safari和opera的字符串搜索功能
- 为什么字符串搜索对某些字符串有效而对其他字符串无效
- 使用查询字符串搜索 AngularJS 资源
- Javascript RegEx全局字符串搜索下划线字符(_)
- 如何做一个“生”字字符串搜索和替换在JavaScript中,没有REGEX
- 使用JS/jQuery进行字符串搜索/模糊匹配
- JavaScript字符串搜索
- JS字符串搜索问题
- Javascript字符串搜索,字母i上出现双点
- 使用 HTML 输入值中的部分字符串搜索页面内容
- 通过单个字符串搜索Linkedin