模糊搜索,匹配文字,然后高亮显示
三层数组,最后一曾数组,进行模糊匹配,匹配上的文字,字体颜色别的颜色
高亮显示匹配文字,
//arr:处理的数组数据
hightlightItem(arr){
let _this = this;
const query = this.searchValue.trim().toLowerCase();
if(!query)return arr;
const escapedQuery = this.escapeRegexp(query);
const regex = new RegExp(escapedQuery,'gi');
_this.$nextTick(()=>{
let dataList = {
...arr,
groupList:arr.groupList.map((group)=>{
const filterItems = group.groupItems.filter((item)=>{
const lowerText = item.name.toLowerCase();
return lowerText.includes(query)
}).map((item)=>{
const lowerText = item.name.toLowerCase();
const hightlightedText = item.name.replace(regex,(match)=>`<span style='color:#fa5900'>${match}</span>`);
return {
...item,
hightlightedText
}
});
//返回有效分组
return {
...group,
groupItems: filterItems
}
}).filter((group)=>group.groupItems.length>0)
}
this.dataList = dataList
})
}
escapeRegexp(str){
return str.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")
}

浙公网安备 33010602011771号