(方法)JavaScript删除字符串中所有指定元素

删除单个或多个字符串中多个关键词


/**
 * @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'
//     }
// ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值