有两个数组:数组1和数组2;
想实现的需求:判断数组2
里有没有数组1
的任意一项,有则true,无则false
let arr1 = [1,2,3,4,5,6];
let arr2 = [6,7,8,9,10,11];
let result = false;
for(item of arr1){
if(arr2.includes(item)){
result = true;
break;
}
}
有没有大佬有更好的写法
有两个数组:数组1和数组2;
想实现的需求:判断数组2
里有没有数组1
的任意一项,有则true,无则false
let arr1 = [1,2,3,4,5,6];
let arr2 = [6,7,8,9,10,11];
let result = false;
for(item of arr1){
if(arr2.includes(item)){
result = true;
break;
}
}
有没有大佬有更好的写法
你的写法,时间复杂度为O(n * m)
如果你先用一个映射表把arr2的数据存起来,那时间复杂度会降低为O(m+n)
let map = arr2.reduce((r, i) => (r[i] = true, r), {})
let result = arr1.some(i => map[i])
13 回答12.8k 阅读
8 回答2.6k 阅读
2 回答5.1k 阅读✓ 已解决
7 回答2k 阅读
3 回答2.2k 阅读✓ 已解决
5 回答895 阅读
3 回答1.1k 阅读✓ 已解决
var arr1 = [1,2,3,4,5,6];
var arr2 = [6,7,8,9,10,11];
var result = (arr1.length + arr2.length) !== Array.from(new Set([...arr1,...arr2])).length;