JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】


Posted in Javascript onFebruary 18, 2019

本文实例讲述了JS实现集合的交集、补集、差集、去重运算。分享给大家供大家参考,具体如下:

ES5写法:

///集合取交集
Array.intersect = function () {
  var result = new Array();
  var obj = {};
  for (var i = 0; i < arguments.length; i++) {
    for (var j = 0; j < arguments[i].length; j++) {
      var str = arguments[i][j];
      if (!obj[str]) {
        obj[str] = 1;
      }
      else {
        obj[str]++;
        if (obj[str] == arguments.length)
        {
          result.push(str);
        }
      }
    }
  }
  return result;
}
//集合去掉重复
Array.prototype.uniquelize = function () {
  var tmp = {},
    ret = [];
  for (var i = 0, j = this.length; i < j; i++) {
    if (!tmp[this[i]]) {
      tmp[this[i]] = 1;
      ret.push(this[i]);
    }
  }
  return ret;
}
//并集
Array.union = function () {
  var arr = new Array();
  var obj = {};
  for (var i = 0; i < arguments.length; i++) {
    for (var j = 0; j < arguments[i].length; j++)
    {
      var str=arguments[i][j];
      if (!obj[str])
      {
        obj[str] = 1;
        arr.push(str);
      }
    }//end for j
  }//end for i
  return arr;
}
//2个集合的差集 在arr不存在
Array.prototype.minus = function (arr) {
  var result = new Array();
  var obj = {};
  for (var i = 0; i < arr.length; i++) {
    obj[arr[i]] = 1;
  }
  for (var j = 0; j < this.length; j++) {
    if (!obj[this[j]])
    {
      obj[this[j]] = 1;
      result.push(this[j]);
    }
  }
  return result;
};
console.log(Array.intersect(["1", "2", "3"], ["2", "3", "4", "5", "6"]));//[2,3]
console.log([1, 2, 3, 2, 3, 4, 5, 6].uniquelize());//[1,2,3,4,5,6]
console.log(Array.union(["1", "2", "3"], ["2", "3", "4", "5", "6"], ["5", "6", "7", "8", "9"]))
console.log(["2", "3", "4", "5", "6"].minus(["1", "2", "3"]));

 使用在线HTML/CSS/JavaScript代码运行工具http://tools.3water.com/code/HtmlJsRun册数上述代码,可得如下运行结果:

JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】

ES6写法:使用构造函数Set

const arr1 = [1,2,3,4];
const arr2 = [3,4,5,6];
const arr3 = [1,2,3,2,1,3,4];
let s1 = new Set(arr1);
let s2 = new Set(arr2);
//并集
let union = [...s1, ...s2];
console.log(union); //[1, 2, 3, 4, 3, 4, 5, 6]
//交集
let intersect = arr1.filter( x => s2.has(x) );
console.log(intersect); //[3, 4]
//差集
let difference = arr1.filter( x => !s2.has(x) );
console.log(difference); //[1, 2]
//去重
let minus = [...new Set(arr3)];
console.log(minus); //[1, 2, 3, 4]

使用在线HTML/CSS/JavaScript代码运行工具http://tools.3water.com/code/HtmlJsRun册数上述代码,可得如下运行结果:

JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
比较简单实用的使用正则三种版本的js去空格处理方法
Nov 18 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
Feb 11 Javascript
jquery插件制作 表单验证实现代码
Aug 17 Javascript
jQuery trigger()方法用法介绍
Jan 13 Javascript
简介JavaScript中fixed()方法的使用
Jun 08 Javascript
jQuery解析json数据实例分析
Nov 24 Javascript
js如何准确获取当前页面url网址信息
Sep 13 Javascript
javascript浏览器用户代理检测脚本实现方法
Oct 27 Javascript
Angular实现可删除并计算总金额的购物车功能示例
Dec 26 Javascript
JavaScript模块管理的简单实现方式详解
Jun 15 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 Javascript
node.js使用yargs处理命令行参数操作示例
Feb 11 Javascript
JS基于开关思想实现的数组去重功能【案例】
Feb 18 #Javascript
JS实现点击li标签弹出对应的索引功能【案例】
Feb 18 #Javascript
Vue框架TypeScript装饰器使用指南小结
Feb 18 #Javascript
深入理解vue-class-component源码阅读
Feb 18 #Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
Feb 18 #Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
Feb 18 #jQuery
详解ES7 Decorator 入门解析
Feb 18 #Javascript
You might like
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
php 邮件发送问题解决
2014/03/22 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
php生成图片验证码的方法
2016/04/15 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
清空上传控件input file的值
2010/07/03 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
Python中关于使用模块的基础知识
2015/05/24 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
Python中正则表达式的用法总结
2019/02/22 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
应届毕业生求职信范文
2013/12/18 职场文书
司法助理专业自荐书
2014/06/13 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
Python装饰器详细介绍
2022/03/25 Python