gpt4 book ai didi

javascript - 突出显示数组中的单词

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:30:39 25 4
gpt4 key购买 nike

我想标记数组中的单词。

$scope.arrayFilter=["mom","is","beautifull"];

但只有当我按照出现的顺序排列单词时,它才对我有用。我希望无论单词的顺序如何,只要它们匹配就会被标记出来。如果我向数组中添加一个新单词,它也应该被标记。

https://jsfiddle.net/1x7zy4La/

<li ng-repeat="item in data ">
<span ng-bind-html="item.title | highlight:arrayFilter"></span>
</li>

$scope.arrayFilter=["mom","is","beautifull"];
$scope.data = [{
title: "mom is beautifull"
}, {
title: "my mom is great"
}, {
title: "I hate the matematics"
}];
});

app.filter('highlight', function($sce) {
return function(text, arrayFilter) {
var stringToDisplay = '';
angular.forEach(arrayFilter,function(key,value){
if(text.includes(key)){
stringToDisplay = stringToDisplay.concat(key).concat(" ");
}
})
stringToDisplay = stringToDisplay.substring(0, stringToDisplay.length - 1);
return $sce.trustAsHtml(text.replace(new RegExp(stringToDisplay, 'gi'), '<span class="highlightedText">$&</span>'));

}
});

enter image description here

最佳答案

问题是您正在连接您的 - 将您的过滤器更改为:

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);
}
});

参见 updated jsfiddle或下面的演示:

var app = angular.module('testApp', []);
app.controller('testCtrl', function($scope) {
$scope.arrayFilter = ["is", "mom", "beautifull"];
$scope.data = [{
title: "mom is beautifull"
}, {
title: "my mom is great"
}, {
title: "I hate the matematics"
}];
});



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 {
background: yellow;
}
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.js"></script>

<div ng-app="testApp" ng-controller="testCtrl">
<li ng-repeat="item in data ">
<span ng-bind-html="item.title | highlight:arrayFilter"></span>
</li>
</div>

关于javascript - 突出显示数组中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45921020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com