模糊搜索,匹配文字,然后高亮显示

三层数组,最后一曾数组,进行模糊匹配,匹配上的文字,字体颜色别的颜色

高亮显示匹配文字,
//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,"\\$&")
}

 

posted @ 2025-11-21 11:13  木樨园  阅读(3)  评论(0)    收藏  举报