function twoArraySameData(array1, array2) { //正则表达式,验证数据连续重复 var reg = /,(.+)\1+/gim; //去掉数组1中重复的数据 array1=trimSameData(array1); //去掉数组2中重复的数据 array2=trimSameData(array2); //连接两数组中的元素 var item = array1.concat(array2); //进行排序,使用系统的元素排列在一起 item.sort(); //存储两个数组相同元素的数组 var sameDataArray=[]; //从第二个元素开始遍历数组,与前者比较 for(var i=1;i<item.length;i++){ //判断与前面的元素是否相同,且是否已经保存到sameDataArray数组了 if(item[i]==item[i-1] && sameDataArray[sameDataArray.length-1]!=item[i]){ sameDataArray.push(item[i]);//添加两个数组相同的元素 } } return sameDataArray; } //数组中相同元素去重 function trimSameData(array){ //正则表达式,验证数据连续重复 var reg = /,(.+)\1+/gim; var arrayStr=","+array.sort().toString()+","; //考虑这样的字符串怎么去重 ,1,1,3,3,34,4,4,5,8,9,9, // 你就知道这里为什么要使用while循环了 while(reg.test(arrayStr)){ arrayStr=arrayStr.replace(reg,",$1"); } arrayStr=arrayStr.slice(1,arrayStr.length-1); return arrayStr.split(","); } var array1 = [1, 3, 4, 5,8,9,3,1,4,20]; var array2 = [8,1,3,34, 4, 9, 3, 34]; //测试 twoArraySameData(array1,array2);//结果 ["1", "3", "4", "8", "9"]
写文章 JS找两个数组中的相同元素【算法】
最新推荐文章于 2023-08-25 18:14:10 发布