首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何编写angularjs过滤器来搜索字符串片段/字符串序列

如何编写angularjs过滤器来搜索字符串片段/字符串序列
EN

Stack Overflow用户
提问于 2013-10-16 13:54:06
回答 3查看 65.6K关注 0票数 15

我正在尝试编写一个angularjs自定义过滤器,以检查一个国家数组是否包含用户输入的搜索字符串。

字符串可以由一个字母组成。‘e’,或n个字母的片段(例如'lan')或整个单词(例如:“英国”)。

在任何情况下,所有包含这一字母或片段的国家都应归还,因此E将返回“England”、“爱沙尼亚”等,而“lan”则返回“England”、“爱尔兰”等。

到目前为止,我的过滤器返回整个国家或单个字母,但我在处理字符串片段时遇到了困难:

  1. HTML模板:
  2. angularJS angular.module('sgComponents').filter('listfilter',[angular.forEach[item.label === searchText) {item.label=== searchText) {item.label===searchText= [];angular.forEach(item,function ){ //匹配整个单词。‘filtered.push’(项目);} var字母= item.label.split('');_.each(字母,函数(字母)){ if ( === searchText) { //匹配单个字母。'E‘console.log('pushing');filtered.push(item);} };//与字母片段相匹配的代码,例如'lan’};返回过滤;};}];
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-16 14:08:28

使用String.indexOf()函数比这简单得多:

代码语言:javascript
运行
复制
angular.forEach(items, function(item) {
    if( item.label.indexOf(searchText) >= 0 ) filtered.push(item);
});

您可能需要将两个字符串.toLowerCase()转换为不区分大小写的匹配:

代码语言:javascript
运行
复制
searchText = searchText.toLowerCase();
angular.forEach(items, function(item) {
    if( item.label.toLowerCase().indexOf(searchText) >= 0 ) filtered.push(item);
});
票数 28
EN

Stack Overflow用户

发布于 2013-10-16 14:07:35

代码语言:javascript
运行
复制
angular.module('sgComponents').filter('listfilter',[ function () {
    return function(items, searchText) {
        var filtered = []; 
        var regex = new RegExp(".*" + searchItem + ".*", "ig");
        angular.forEach(items, function(item) {
            if(regex.test(item)){
                filtered.push(item);
            }
        });
        return filtered;
    }
}]);
票数 7
EN

Stack Overflow用户

发布于 2013-10-16 14:06:10

查看typeahead的角UI引导指令,它完全按照您的要求执行:http://angular-ui.github.io/bootstrap/#/typeahead

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19405346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档