兩個數組的交集 你能想出多少種方法

看到標題可能最早想到的方法就是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)];
};

 

以上即是我整理的關於求兩數組的交集的方法,你們有什麼意見能夠提出來對象

相關文章
相關標籤/搜索