zoukankan      html  css  js  c++  java
  • 两个数组的交集 你能想出多少种方法

    看到标题可能最先想到的方法就是for循环了,没错for循环是一种方法。

    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循环还有别的方法吗?当然有,下面让我们一起来探索吧~

    利用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()将数组转化为对象

    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查找

    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);
            });
    };

    同理可

    var intersection = function(nums1, nums2) {
        //数组交集
        let intersect = nums1.filter(x => nums2.includes(x));
        //数组去重
        return [... new Set(intersect)];
    };

    以上便是我整理的关于求两数组的交集的方法,大家有什么意见可以提出来

  • 相关阅读:
    【Coursera】Third Week(2)
    【TCP/IP详解 卷一:协议】第二章:链路层
    【Coursera】Third Week(1)
    【Coursera】SecondWeek(2)
    【Coursera】SecondWeek(1)
    【Coursera】History: Dawn of Electronic Computing学后小结
    【TCP/IP详解 卷一:协议】第一章概论 学习笔记
    NS3 fifth.cc 拥塞窗口实例
    NS3 利用Gnuplot生成拥塞窗口例子fifth.cc的png图像
    C++小结:迟到的小结和重新起航的故事
  • 原文地址:https://www.cnblogs.com/lbx-night/p/11544547.html
Copyright © 2011-2022 走看看