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 版权协议,转载请附上原文出处链接和本声明。