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

2017-01-07 00:07 出处:360java.com 作者:360java 评论(
网上找的没有用啊?谁能给一段有用的,谢谢!

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

最佳答案
求一段JS代码,取数组的交集,并集,差集
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()去重的函数,并且另外三个方法也都是去重后的结果。

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

希望能帮到你!

分享到:
本文标签:

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

Copyright (C) 360java 360java.com, All Rights Reserved.

苏ICP备16022210号