js的数组求并集(支持多个数组)

  • Post author:
  • Post category:其他




js求并集算法心得

1.这是一个面试题,让封装一个方法,方法就是求多个数组的并集,我的考虑是首先遍历数组的长度最短的,然后拿这个值去别的数组去通过js中的indexof()方法判断是否存在,还准备了一个flag变量旗帜法,因为可能有好多数组,都必需有,

下面代码展示:

function add(){
   let min=arguments[0];//第一个参数默认最小的
   let mst=[];//创建一个空输出,存储求出的并集的数
   for(let i=1;i<arguments.length;i++){//这里比的参数数组的长度,知道吧
        if(arguments[i].length<min){//下标i的数组的length长度,
             min=arguments[i].length;
             [arguments[0],arguments[i]]=[arguments[i],arguments[0]];//换个位置始终让长度最短的数组放到第一个位置;下面要用;
        }
   }//上面遍历已经把最短的数组放到第一位!
   //下面开始继续一个遍历,
   let arr=arguments[0];//用arr代替arguments【0】
   for(let i=0;i<arr.length;i++){
        let flag=0;//旗帜法,用他记录个数
        for(let j=1;j<arguments.length;j++){//因为arr就是arguments[0],所以从1开始循环,
             if(arguments[j].indexOf(arr[i])!=-1){ //不等于-1表示纯在这个数
                 flag++;
             }
        
        }//等着这个循环结束我们来个判断,
        if(flag==arguments.length-1){//如果flag的值跟(传的数组个数-1)相等的话
           mst.push(arr[i]);//就证明这数字是所以数组都包含,所以放入我们一开始创建的空数组里面
        }
   }
   console.log(mst);
}
下面调用方法()
let arr1=[1,2,3,4,5];
let arr2=[4,5,6];
let arr3=[4,6];
add(arr1,arr2,arr3);//输出【4】
//该方法我们写的支持多个数组,然后你只输入一个数组,该方法打印该原数组
//这是我最近碰见的一道面试题,这是本人的思想,如果你们更好的方法给我说说,一起努力,一起学习。。。



版权声明:本文为qq_43812823原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。