首页 新闻 会员 周边

求一段JS代码,取数组的交集,并集,差集

0
悬赏园豆:30 [已解决问题] 解决于 2014-06-16 08:35

网上找的没有用啊?谁能给一段有用的,谢谢!

happydaily的主页 happydaily | 菜鸟二级 | 园豆:301
提问于:2014-06-15 20:17
< >
分享
最佳答案
0
function qc(a) { // 去重
    var r = [];
    for(var i = 0; i < a.length; i ++) {
        var flag = true;
        var temp = a[i];
        for(var j = 0; j < r.length; j ++) {
            if(temp === r[j]) {
                flag = false;
                break;
            }
        }
        if(flag) {
            r.push(temp);
        }
    }
    return r;
}
function jj(a, b) { // 交集
    var result = [];
    for(var i = 0; i < b.length; i ++) {
        var temp = b[i];
        for(var j = 0; j < a.length; j ++) {
            if(temp === a[j]) {
                result.push(temp);
                break;
            }
        }
    }
    return qc(result);
}
function bj(a, b) { // 并集
    return qc(a.concat(b));
}
function cj(a, b) { // 差集
    var clone = a.slice(0);
    for(var i = 0; i < b.length; i ++) {
        var temp = b[i];
        for(var j = 0; j < clone.length; j ++) {
            if(temp === clone[j]) {
                clone.splice(j,1);
            }
        }
    }
    return qc(clone);
}
View Code

最主要的就是原数组中本来就有重复的数据怎么算?毕竟集合的定义中是不能重复的,我现在提供了一个qc()去重的函数,并且另外三个方法也都是去重后的结果。

还有一点,这四个函数都不会修改原来的数组

希望能帮到你!

收获园豆:30
ThreeTree | 小虾三级 |园豆:1490 | 2014-06-15 22:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册