JavaScript如何简化检查截去首字符的字符串是否存在于对象title字段的运行代码
优化后代码
// 可直接复用的匹配函数 function getMatchedTitle(inputStr, targetObj) { const matchContent = inputStr.slice(1) // 直接遍历对象所有值数组,无需处理无用的键 for (const itemArr of Object.values(targetObj)) { // 跳过非title开头、非有效数组的项 if (!Array.isArray(itemArr) || itemArr[0] !== 'title') continue // 匹配到目标内容直接返回,提前终止遍历节省性能 if (itemArr.includes(matchContent)) return matchContent } // 无匹配返回空字符串 return '' } // 测试用例 const testStr1 = '*Test Title' const testStr2 = '*Test1' const sourceObj = { "0": ["para", "WZYYoPd3ummvxQN0"], "1": ["insertorder", "first"], "2": ["lmkr", "1"], "3": ["title", "Test Title"], "4": ["para", "Test1"], } console.log(getMatchedTitle(testStr1, sourceObj)) // 输出 Test Title console.log(getMatchedTitle(testStr2, sourceObj)) // 输出 ''
核心优化点
- 修正了方法错用问题:原代码使用
filter遍历赋值属于API使用不当,filter本身是用于生成过滤后的新数组,不适合做遍历修改外部变量的操作,优化后直接用for循环遍历,匹配到就提前终止,性能更高 - 简化了不必要的逻辑:原代码转
Object.entries获取键值对,但实际逻辑完全用不上键,直接用Object.values获取所有值数组即可,减少无效操作 - 增加了边界兼容:新增数组类型判断,避免源对象中存在非数组值时代码报错
- 封装为可复用函数,逻辑清晰易懂,无需重复编写冗余代码
内容的提问来源于stack exchange,提问作者Benk I
相关产品推荐
相关产品推荐

