看到標題可能最早想到的方法就是for循環了,沒錯for循環是一種方法。javascript
var intersection = function (nums1, nums2) {
var arr = [];
for (var i = 0; i< nums1.length;i++){
if(nums2.indexOf(nums1[i]) > -1 && arr.indexOf(nums1[i]) === -1){
arr.push(nums1[i]);
}
}
return arr;
};
除了for循環還有別的方法嗎?固然有,下面讓咱們一塊兒來探索吧~java
利用while循環數組
var intersection = function (nums1, nums2) {
var i = 0;
var arr = [];
while(i< nums1.length){
if(nums2.indexOf(nums1[i]) > -1 && arr.indexOf(nums1[i]) === -1){
arr.push(nums1[i])
}
i++;
}
return arr;
};
利用new Set()將數組轉化爲對象ui
var intersection = function(nums1, nums2) {
var hash1 = new Set(nums1);
var hash2 = new Set(nums2); // 去重、轉化成{value, value1}的形式 如:new Set([1,2,1]) ---> {1,2}
var res=[];
for(var i of hash1){
if(hash2.has(i)){
res.push(i);
}
}
return res;
};
利用filter查找spa
var intersection = function(nums1, nums2) {
var hash1 = new Set(nums1);
return nums2.filter(function(num,index,self){
// indexOf 會返回在數組中找到符合的第一個元素的位置,所以會過濾重複元素
return hash1.has(num)&&(self.indexOf(num)==index);
});
};
同理可code
var intersection = function(nums1, nums2) {
//數組交集
let intersect = nums1.filter(x => nums2.includes(x));
//數組去重
return [... new Set(intersect)];
};
以上即是我整理的關於求兩數組的交集的方法,你們有什麼意見能夠提出來對象