Javascript 使用数组按单词进行筛选
我目前有一段代码,允许我根据名称和标题过滤JSON对象。我有一个包含几个单词的数组,我想使用数组来制作相同的过滤器。我不想使用输入文本,我需要使用数组 我想按数组中的每个单词进行筛选Javascript 使用数组按单词进行筛选,javascript,angularjs,Javascript,Angularjs,我目前有一段代码,允许我根据名称和标题过滤JSON对象。我有一个包含几个单词的数组,我想使用数组来制作相同的过滤器。我不想使用输入文本,我需要使用数组 我想按数组中的每个单词进行筛选 $scope.arrayFilter=["is","mom","beautifull"]; 在启动应用程序时,是否可以默认执行此筛选?。多谢各位 <li ng-repeat="item in data "> <span ng-bind-html="item.title | highlight
$scope.arrayFilter=["is","mom","beautifull"];
在启动应用程序时,是否可以默认执行此筛选?。多谢各位
<li ng-repeat="item in data ">
<span ng-bind-html="item.title | highlight:search"></span>
</li>
$scope.arrayFilter=["is","mom","beautifull"];
$scope.data = [{
title: "mom is beautifull"
}, {
title: "my mom is great"
}, {
title: "I hate the matematics"
}];
.filter('highlight', function($sce) {
return function(text, phrase) {
if (phrase) text = text.replace(new RegExp('('+phrase+')', 'gi'),
'<span class="highlighted">$1</span>')
return $sce.trustAsHtml(text);
}
});
$scope.arrayFilter=[“是”、“妈妈”、“美丽的”];
$scope.data=[{
标题:“妈妈很漂亮”
}, {
标题:“我妈妈很棒”
}, {
标题:“我讨厌数学”
}];
.filter('highlight',函数($sce){
返回函数(文本、短语){
如果(短语)text=text.replace(新的RegExp(“(“+短语+”)”,“gi”),
'$1')
返回$sce.trustAsHtml(文本);
}
});
你需要将整个数组传递给你的过滤器,看看它是否在句子中,这里需要做一个小调整,将数组按正确的顺序排列,使句子匹配。否则,使用过滤器无法实现这一点
$scope.arrayFilter=["mom","is","beautifull"];
演示
var-app=angular.module('testApp',[]);
app.controller('testCtrl',函数($scope){
$scope.arrayFilter=[“mom”、“is”、“beautifull”];
$scope.data=[{
标题:“妈妈很漂亮”
}, {
标题:“我妈妈很棒”
}, {
标题:“我讨厌数学”
}];
});
应用过滤器('突出显示',功能($sce){
返回函数(文本、数组过滤器){
var stringToDisplay='';
角度.forEach(数组过滤器,函数(键,值){
if(文本包括(键)){
stringToDisplay=stringToDisplay.concat(键).concat(“”);
}
})
stringToDisplay=stringToDisplay.substring(0,stringToDisplay.length-1);
返回$sce.trustAsHtml(text.replace(新的RegExp(stringToDisplay,'gi'),'$&'));
}
});代码>
.highlightedText{
背景:黄色;
}
太好了。如果使用.push向数组中添加新词,是否会更新?。什么是“gi”。谢谢g修饰语:全局。所有匹配(第一次匹配时不返回)i修饰符:不敏感。不区分大小写的匹配(忽略[a-zA-Z]的大小写)@yavg发生了什么事?总是要按顺序排列数组吗?这不符合我真正的问题。单词应该按任何顺序排列,然后标记它们。