当前位置:首页 > 日记 > 正文

JS数组交集、并集、差集的示例代码

JS数组交集、并集、差集的示例代码

 本文介绍了JS数组交集、并集、差集,分享给大家,具体如下:

由于下面会用到ES5的方法,低版本会存在兼容,先应添加对应的polyfill

Array.prototype.indexOf = Array.prototype.indexOf || function (searchElement, fromIndex) {  var index = -1;  fromIndex = fromIndex * 1 || 0;  for (var k = 0, length = this.length; k < length; k++) {    if (k >= fromIndex && this[k] === searchElement) {      index = k;      break;    }  }  return index;};Array.prototype.filter = Array.prototype.filter || function (fn, context) {  var arr = [];  if (typeof fn === "function") {    for (var k = 0, length = this.length; k < length; k++) {      fn.call(context, this[k], k, this) && arr.push(this[k]);    }  }  return arr;};

依赖数组去重方法:

// 数组去重Array.prototype.unique = function() {  var n = {}, r = [];  for (var i = 0; i < this.length; i++) {    if (!n[this[i]]) {      n[this[i]] = true;      r.push(this[i]);     }  }  return r;}

交集

交集元素由既属于集合A又属于集合B的元素组成

Array.intersect = function(arr1, arr2) {  if(Object.prototype.toString.call(arr1) === "[object Array]" && Object.prototype.toString.call(arr2) === "[object Array]") {    return arr1.filter(function(v){      return arr2.indexOf(v)!==-1     })   }}// 使用方式Array.intersect([1,2,3,4], [3,4,5,6]); // [3,4]

并集

并集元素由集合A和集合B中所有元素去重组成

Array.union = function(arr1, arr2) {  if(Object.prototype.toString.call(arr1) === "[object Array]" && Object.prototype.toString.call(arr2) === "[object Array]") {    return arr1.concat(arr2).unique()  }}// 使用方式Array.union([1,2,3,4], [1,3,4,5,6]); // [1,2,3,4,5,6]

差集

A的差集:属于A集合不属于B集合的元素

B的差集:属于B集合不属于A集合的元素

Array.prototype.minus = function(arr) {  if(Object.prototype.toString.call(arr) === "[object Array]") {    var interArr = Array.intersect(this, arr);// 交集数组    return this.filter(function(v){      return interArr.indexOf(v) === -1    })  }}// 使用方式var arr = [1,2,3,4];arr.minus([2,4]); // [1,3]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

Js中async/await的执行顺序详解

Js中async/await的执行顺序详解

执行顺序,详解,电脑软件,Js,async,前言虽然大家知道async/await,但是很多人对这个方法中内部怎么执行的还不是很了解,本文是我看了一遍技术博客理解 JavaScript 的 async/await(如果对async/await不熟悉可以先看下这篇文章)后拓展了一下,我理了一…

JS设置随机出现2个数字的实例代码

JS设置随机出现2个数字的实例代码

设置,实例代码,数字,电脑软件,JS,1和2 随机出现<script type="text/javascript"> $(function(){ if (Math.random()>0.5) { console.log("1"); }else{ console.log("2"); } }); </script> PS:JS…

ES6 javascript中class类的get与se

ES6 javascript中class类的get与se

实例分析,电脑软件,javascript,set,class,本文实例讲述了ES6 javascript中class类的get与set用法。分享给大家供大家参考,具体如下:与 ES5 一样, 在 Class 内部可以使用get和set关键字, 对某个属性设置存值函数和取值函数, 拦截该属性的存取行为…

浪漫爱情一男一女情侣签名

浪漫爱情一男一女情侣签名

一女,浪漫爱情,情侣,热门,经典,  情侣签名时刻透露着甜蜜浪漫的气息,展现着浪漫爱情,下面来看看浪漫爱情一男一女情侣签名。情侣签名浪漫爱情一男一女【经典篇】世界这么小,我们就这样遇见世界这么大,分开就很难再见我的每场梦里有你才甜蜜我…

js以及jquery实现手风琴效果

js以及jquery实现手风琴效果

手风琴,效果,电脑软件,js,jquery,最近又复习了jQuery的知识,既然jQuery是javascript的一个库。jQuery能做到的事情javascript也能做到。因此用这两种方法实现了图片手风琴效果。 按照惯例,还是上代码吧,因为代码里有我的注释也就相当于解释了!(…

Nodejs 复制文件/文件夹的方法

Nodejs 复制文件/文件夹的方法

方法,复制文件,电脑软件,Nodejs,1.使用fs复制文件使用fs对象的readFileSync,writeFileSync方法进行读写操作复制cp.jsfunction copyIt(from, to) { fs.writeFileSync(to, fs.readFileSync(from)); //fs.createReadStream(src).pipe(fs.crea…

PS怎么把胡歌的转换成手绘素描?

PS怎么把胡歌的转换成手绘素描?

素描,转换成,手绘,电脑软件,PS,教大家如何把胡歌的照片制作素描效果,方法简单,大部分素描效果都是用这种方法,推荐给大家收藏学习了。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、原素材(举个例子)2、…

微信小程序 参数传递实例代码

微信小程序 参数传递实例代码

实例代码,参数传递,程序,电脑软件,微信小,微信小程序 参数传递实例代码1、通过事件传递参数实例代码:<view data-id="103" bindtap="evenName"></view>Page({ evenName: function(e) { //获得点击事件传递的id console.log(e.target.d…

js中变量的连续赋值 | 实例讲解

js中变量的连续赋值 | 实例讲解

变量,连续赋值,实例,电脑软件,js,今天遇到了一个连续赋值的经典案例,网友们给出的答案也是五花八门,看起来有些繁琐,我也来说说自己的看法。下面就是这个经典案例:var a = {n: 1};var b = a;a.x = a = {n: 2};console.log(a);console.log(b);cons…

WPS演示中如何插入项目符号及调整

WPS演示中如何插入项目符号及调整

调整,项目,插入项目,符号,演示,  通常情况下我们都会用到项目符号或者编号在写演示文稿时罗列出一些重点,那么在wps演示中如何插入项目符号及编号。以下是小编为您带来的关于WPS演示中插入项目符号及调整项目符号,希望对您有所帮助。WPS演…

JS基于贪心算法解决背包问题示例

JS基于贪心算法解决背包问题示例

贪心算法,背包问题,示例,电脑软件,JS,本文实例讲述了JS基于贪心算法解决背包问题。分享给大家供大家参考,具体如下:贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部…

AI怎么给圆形添加模糊效果?

AI怎么给圆形添加模糊效果?

模糊,效果,电脑软件,AI,ai的图形想要显示的更加模糊,该怎么添加模糊效果呢?下面我们就来看看详细的教程。软件名称:Adobe Illustrator CS6 (AI cs6) 精简绿色中文版(32位+64位)软件大小:205MB更新时间:2014-05-111、为了清晰说明,此例中以一个圆…