写文章 JS找两个数组中的相同元素【算法】

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"] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值