JavaScript中如何比对数组和字符串查找相同元素并修复代码问题
原代码错误点
- 语法错误:
forEach方法的参数书写错误,多写了一个右括号,且函数体缺少闭合括号 - 逻辑错误:
forEach方法没有返回值,在其回调函数中return的内容无法被外层函数接收,也不会中断遍历 - 设计问题:函数定义的
keyword、strings参数没有被使用,反而在函数内部写死了比对字符串和目标数组,无法适配不同输入场景
修正后的代码
function findStringsInArrayByKeyword(keyword, strings) { const result = [] strings.forEach(function(a) { if (a === keyword) { result.push(a) } }) return result } // 调用示例 const mang = ['Javascript', 'PHP', 'Học PHP'] const chuoi = "PHP" console.log(findStringsInArrayByKeyword(chuoi, mang)) // 输出 ['PHP']
更简洁的实现
直接使用JS数组内置的filter方法,该方法会返回所有满足判断条件的元素组成的新数组,完全符合需求:
function findStringsInArrayByKeyword(keyword, strings) { return strings.filter(item => item === keyword) } // 调用示例 const mang = ['Javascript', 'PHP', 'Học PHP'] const chuoi = "PHP" console.log(findStringsInArrayByKeyword(chuoi, mang)) // 输出 ['PHP']
内容的提问来源于stack exchange,提问作者nguyencuc2186
相关产品推荐
相关产品推荐

