总结了一下js中的差集、交集、并集

发布时间:2019-08-15 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了总结了一下js中的差集、交集、并集脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

总结了一下有关于数组的差集、交集、并集的方法;

es6的方法实现

去重
/**
 * 简单数组去重
 * @param {Array} a 
 */
const uniquelize = function(a) {
  if (a.constructor !== Array) {
    throw TyPEError("请传入数组类型");
  }
  return Array.From(new Set(a));
};
并集
/**
 * 简单数组的并集
 * @param {Array} a 
 * @param {Array} b 
 */
const getUnion = function(a,b){
    if(a.constructor === Array && b.constructor === Array){
        let set1 = new Set(a);
        let set2 = new Set(b);
        return Array.from(new Set([...set1,...set2]));
    }
    return null;
}
交集
/**
 * 简单数组的交集
 * @param {Array} a 
 * @param {Array} b 
 */
const getIntersect = function(a,b){
    if(a.constructor === Array && b.constructor === Array){
        let set1 = new Set(a);
        let set2 = new Set(b);
        return Array.from(new Set([...set1].filter( x => set2.has(x))));
    }
    return null;
}
差集
/**
 * 简单数组的差集
 * @param {Array} a 
 * @param {Array} b 
 */
const getDifference = function(a,b){
    if(a.constructor === Array && b.constructor === Array){
        let set1 = new Set(a);
        let set2 = new Set(b);
        return Array.from(new Set([...set1].filter(x => !set2.has(x))));
    }
    return null;
}

es5的方法实现

去重
/**
 * 简单的数组去重
 * @param {Array} a 
 */
var uniquelize = function(a) {
  if (a.constructor !== Array) {
    throw TypeError("请传入数组类型");
  }
  var obj = {},
    arr = [];
  for (var i = 0, j = a.length; i < j; i++) {
    if (!obj[a[i]]) {
      obj[a[i]] = 1;
      arr.push(a[i]);
    }
  }
  return arr;
};
交集
/**
 * 简单数组的交集
 */
var getIntersect = function(){
    var arr = new Array();
    var obj = new Object();
    var arguLen = arguments.length;
    for(var i = 0; i<arguLen;i++){
        if(arguments[i].constructor !== Array){
            throw TypeError("请都传入数组类型");
        }
        for(var j = 0,length = arguments[i].length;j<length;j++){
            var item = arguments[i][j];
            if(!obj[item]){
                obj[item] = 1;
            }else{
                obj[item]++;
                if(obj[item]===arguLen){
                    arr.push(item);
                }
            }
        }
    }
    return arr;
}
并集
/**
 * 简单数组的并集
 */
var getUnion = function(){
    var arr = new Array();
    var obj = new Object();
    var arguLen = arguments.length;
    for(var i = 0; i<arguLen;i++){
        if(arguments[i].constructor !== Array){
            throw TypeError("请都传入数组类型");
        }
        for(var j = 0,length = arguments[i].length;j<length;j++){
            var item = arguments[i][j];
            if(!obj[item]){
                obj[item] = 1;
                arr.push(item);
            }else{
                //统计一下出现了多少次
                obj[item]++;
            }
        }
    }
    return arr;
}
差集
/**
 * 简单数组的差集
 */
var getDifference = function(){
    var arr = new Array();
    var obj = new Object();
    var arguLen = arguments.length;
    for(var i = 0; i<arguLen;i++){
        if(arguments[i].constructor !== Array){
            throw TypeError("请都传入数组类型");
        }
        for(var j = 0,length = arguments[i].length;j<length;j++){
            var item = arguments[i][j];
            if(!obj[item]){
                obj[item] = 1;
                arr.push(item);
            }else{
                obj[item]++;
                var index = arr.indexOf(item);
                //存在就删除掉
                if(index !== -1){
                    arr.splice(index,1);
                }
            }
        }
    }
    return arr;
}

脚本宝典总结

以上是脚本宝典为你收集整理的总结了一下js中的差集、交集、并集全部内容,希望文章能够帮你解决总结了一下js中的差集、交集、并集所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。