如何修改JavaScript函数使其正确判断两数组存在共同元素并返回true?
问题分析与修改方案
你的checkArray函数当前逻辑是判断两个数组是否完全相同(长度一致且对应位置元素全部相等),但你的需求是判断两个数组是否至少包含一个共同元素,这就是函数返回false的核心原因。
修改方法
方法1:嵌套循环基础实现
遍历第一个数组的每个元素,在第二个数组中逐一比对,找到相同元素则立即返回true,遍历结束未找到则返回false:
const array_one = [ "Apparel", "Footwear", ]; const array_two = [ "Soap", "Footwear", ]; const checkArray = (arr1, arr2) => { for (let item of arr1) { for (let compareItem of arr2) { if (item === compareItem) { return true; } } } return false; }; console.log(checkArray(array_one, array_two)); // 输出 true
方法2:some()+includes()简洁实现
利用数组内置方法简化代码,可读性更强:
const array_one = [ "Apparel", "Footwear", ]; const array_two = [ "Soap", "Footwear", ]; const checkArray = (arr1, arr2) => arr1.some(item => arr2.includes(item)); console.log(checkArray(array_one, array_two)); // 输出 true
方法3:Set优化性能(适合大数据量)
将其中一个数组转为Set,利用Set的O(1)查找特性提升效率,避免嵌套循环的O(n²)复杂度:
const array_one = [ "Apparel", "Footwear", ]; const array_two = [ "Soap", "Footwear", ]; const checkArray = (arr1, arr2) => { const set = new Set(arr2); return arr1.some(item => set.has(item)); }; console.log(checkArray(array_one, array_two)); // 输出 true
内容的提问来源于stack exchange,提问作者Ptrades
相关产品推荐
相关产品推荐

