我一直在尝试使用角度过滤器$filter('filter')
以编程方式过滤数组。我想基于两个属性进行过滤,但我希望在属性和/或其他属性中搜索结果。
使用此阵列
[{
id:1,
name:'User2',
rut:'22.222.222-2',
created_at:'2016-03-23T18:36:34.404Z',
updated_at:'2016-03-23T18:36:34.404Z',
role_id:1},
{
id:2,
name:'User1',
rut:'11.111.111-1',
created_at:'2016-03-23T18:36:34.416Z',
updated_at:'2016-03-23T18:36:34.416Z',
role_id:3}
];
当我使用字符串“2016”进行搜索时,我得到整个数组,因为我的过滤器搜索所有属性,如果我搜索,我需要查找属性name
或者rut
。
这是我的搜索功能:
vm.usersList = angular.copy(UsersResolve);
function search(_searchString){
vm.usersList = $filter('filter')(UsersResolve, {$: _searchString})
: UsersResolve;
}
答案 0 :(得分:1)
这样的事情应该有效。您可以将其调整为$ filter。
function search(_searchString){
vm.usersList = vm.usersList.filter( function(user) {
return user.name.indexOf(_searchString) >-1 || user.rut.indexOf(_searchString)
}
}
答案 1 :(得分:1)
$ filter('filter')(数组,表达式,比较器)
表达式参数可以是string output = "\r\nR‚servations d'URLÿ:\r\n--------------------\r\n\r\n URL r‚serv‚e : https://+:443/SomeWebSite/ \r\n Utilisateurÿ: AUTORITE NT\\SERVICE R\u0090SEAU\r\n \u0090couterÿ: Yes\r\n D‚l‚guerÿ: Yes\r\n SDDLÿ: D:(A;;GA;;;NS) \r\n\r\n\r\n";
output = output.Replace(Environment.NewLine, ""); //==> output2=="R‚servations d'URLÿ:-----------
Regex testUrlOpened = new Regex(output, RegexOptions.Singleline);
MessageBox.Show(testUrlOpened.IsMatch(@"URL").ToString()); // ==> False
MessageBox.Show(testUrlOpened.IsMatch(@".+URL.+").ToString()); // ==> False
MessageBox.Show(testUrlOpened.IsMatch(@"URL .+https:\/\/\+:443\/SomeWebSite\/.+Yes.+Yes.+SDDL.+").ToString()); // ==> False
。您可以使用它来过滤掉数组。
function(value, index, array) {}
请参阅此Plunker。