Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 突出显示数组中的单词_Javascript_Angularjs_Arrays - Fatal编程技术网

Javascript 突出显示数组中的单词

Javascript 突出显示数组中的单词,javascript,angularjs,arrays,Javascript,Angularjs,Arrays,我想在数组中标记我的单词 $scope.arrayFilter=["mom","is","beautifull"]; 但这只适用于我,如果我有这些词的出现顺序。我希望,无论单词的顺序如何,如果匹配,都要标记这些单词。如果我在数组中添加一个新词,它也应该被标记 $scope.arrayFilter=[“mom”、“is”、“beautifull”]; $scope.data=[{ 标题:“妈妈很漂亮” }, { 标题:“我妈妈很棒” }, { 标题:“我讨厌数学” }]; }); 应用过滤

我想在数组中标记我的单词

$scope.arrayFilter=["mom","is","beautifull"];
但这只适用于我,如果我有这些词的出现顺序。我希望,无论单词的顺序如何,如果匹配,都要标记这些单词。如果我在数组中添加一个新词,它也应该被标记

  • $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'),'$&')); } });

    这是一个工作的过滤器:

    app.filter('highlight', function($sce) {
    return function(text, arrayFilter) {
        var stringToDisplay = '';
        angular.forEach(arrayFilter,function(key,value){
            if(text.includes(key)){
              text = text.replace(new RegExp(key, 'gi'), '<span class="highlightedText">$&</span>');
            }
        })
       return  $sce.trustAsHtml(text);
    }
    });
    
    app.filter('highlight',函数($sce){
    返回函数(文本、数组过滤器){
    var stringToDisplay='';
    角度.forEach(数组过滤器,函数(键,值){
    if(文本包括(键)){
    text=text.replace(新的RegExp(键'gi'),'$&');
    }
    })
    返回$sce.trustAsHtml(文本);
    }
    });
    
    问题在于您正在浓缩密钥-将您的
    过滤器更改为:

    app.filter('highlight', function($sce) {
      return function(text, arrayFilter) {
        angular.forEach(arrayFilter, function(key, value) {
          if (text.includes(key)) {
            text = text.replace(new RegExp(key, 'gi'), '<span class="highlightedText">$&</span>')
          }
        })
        return $sce.trustAsHtml(text);
      }
    });
    
    .highlightedText{
    背景:黄色;
    }
    
    

  • 如果您还想突出显示单词之间的空格,这里有一个过滤器版本:

    app.filter('highlight',函数($sce){
    返回函数(文本、数组过滤器){
    var regex=“([\\s]*”+arrayFilter.join([\\s]*)|([\\s]*”+“[\\s]*)”)”;
    返回$sce.trustAsHtml(text.replace(newregexp(regex,'gi'),'$&'));
    }
    
    });

    你能帮我做这个吗?
    app.filter('highlight', function($sce) {
      return function(text, arrayFilter) {
        angular.forEach(arrayFilter, function(key, value) {
          if (text.includes(key)) {
            text = text.replace(new RegExp(key, 'gi'), '<span class="highlightedText">$&</span>')
          }
        })
        return $sce.trustAsHtml(text);
      }
    });