如何将字符串 match() 与 angularJs $scope.search 变量一起使用
How to use string match() with angularJs $scope.search variable
我尝试使用 忽略区分大小写 和我的输入 $scope.search
变量的字符串匹配,但它不起作用。
<input type="text" ng-model="search" autofocus="autofocus">
angular.forEach(groups, function(group, key) {
console.log(group); // => Object contains
if (group.label.match(/($scope.search)/i)) {
result[key] = group;
}
});
数据对象组:
Object { label: "Transfiguration", articles: Array[1] }
如何正确使用 group.lable.match() 和 $scope.search
?
非常感谢。
您的正则表达式是动态的,因此您不能使用 /regexp/
语法。您需要创建一个 Regexp
对象。
angular.forEach(groups, function(group, key) {
console.log(group); // => Object contains
if (group.label.match(new RegExp("(" + $scope.search + ")", "i"))) {
result[key] = group;
}
});
您也可以从 RegExp 中删除括号。
最好也使用 test()
,因为您对结果不感兴趣:
if(new RegExp($scope.search, "i").test(group.label)) {
最后,如果这是一个基本搜索,将两个部分都改为小写并使用 indexOf
应该会更有效率:
if (group.label.toLowerCase().indexOf($scope.search.toLowerCase()) > -1) {
您始终可以在 angularjs 模块中使用 javascript :)
angular.forEach(groups, function(group, key) {
console.log(group); // => Object contains
if (group.label.toLowerCase().indexOf($scope.search.toLowerCase())!=-1) {
result[key] = group;
}
});
这应该可以解决您的问题
我尝试使用 忽略区分大小写 和我的输入 $scope.search
变量的字符串匹配,但它不起作用。
<input type="text" ng-model="search" autofocus="autofocus">
angular.forEach(groups, function(group, key) {
console.log(group); // => Object contains
if (group.label.match(/($scope.search)/i)) {
result[key] = group;
}
});
数据对象组:
Object { label: "Transfiguration", articles: Array[1] }
如何正确使用 group.lable.match() 和 $scope.search
?
非常感谢。
您的正则表达式是动态的,因此您不能使用 /regexp/
语法。您需要创建一个 Regexp
对象。
angular.forEach(groups, function(group, key) {
console.log(group); // => Object contains
if (group.label.match(new RegExp("(" + $scope.search + ")", "i"))) {
result[key] = group;
}
});
您也可以从 RegExp 中删除括号。
最好也使用 test()
,因为您对结果不感兴趣:
if(new RegExp($scope.search, "i").test(group.label)) {
最后,如果这是一个基本搜索,将两个部分都改为小写并使用 indexOf
应该会更有效率:
if (group.label.toLowerCase().indexOf($scope.search.toLowerCase()) > -1) {
您始终可以在 angularjs 模块中使用 javascript :)
angular.forEach(groups, function(group, key) {
console.log(group); // => Object contains
if (group.label.toLowerCase().indexOf($scope.search.toLowerCase())!=-1) {
result[key] = group;
}
});
这应该可以解决您的问题