删除单个或多个字符串中多个关键词
/**
* @param {string} initStr -需要处理的字符串
* @param {string || array} initkeyWord -需要删除的关键词单个字符或者多个字符数组(数组中字符不要由重叠部分)
* bad ['有限公司','股份有限公司'] 问题:股份 不会被删除
* bad ['股份有限公司','有限公司'] 长字符靠前可以解决(不推荐)
* good ['有限','股份','公司']
* @returns {string} -处理后字符换
*/
const filterKeyWord = (initStr, initkeyWord) => {
let handleAfterStr = initStr //保存处理后的字符串,默认为初始字符
// 递归删除initStr中所有keyW字样
const filterKeyW = (keyW) => {
if (handleAfterStr.includes(keyW)) { //初始值是否包含删除的关键词
handleAfterStr = handleAfterStr.replace(keyW, ''); //删除关键词
filterKeyW(keyW)
} else {
return
}
}
// 数组格式处理
if (Array.isArray(initkeyWord)) {
for (let keyWord of initkeyWord) {
filterKeyW(keyWord)
}
} else { //字符串格式处理
filterKeyW(initkeyWord)
}
return handleAfterStr //返回处理后的字符串,或者不包含直接返回原始字符串
};
// 使用示例
// 单个元素删除指定字符====================================
console.log(filterKeyWord('某某某有限责任公司', '有限责任公司'));
//某某某
// 多个元素删除指定字符====================================
const arr = ["某某某管理公司", "某某某股份有限公司"];
let newArr = []
arr.forEach(item => {
newArr.push(filterKeyWord(item, ['公司', '股份', '有限']));
})
console.log(newArr);
// ['某某某管理', '某某某']
// 删除对象属性指定字符=====================================
const ArrObj = [
{
id: 1,
value: 'JavaScript学习学习学习'
},
{
id: 1,
value: 'html学习辅导'
},
{
id: 1,
value: 'css教程'
},
{
id: 1,
value: 'vue课程辅导学习'
}
]
const delArr = ['学习', '辅导', '教程', '课程']
ArrObj.forEach((item) => {
item.value = filterKeyWord(item.value, delArr)
})
console.log(ArrObj);
// [
// {
// id: 1,
// value: 'JavaScript'
// },
// {
// id: 1,
// value: 'html'
// },
// {
// id: 1,
// value: 'css'
// },
// {
// id: 1,
// value: 'vue'
// }
// ]