博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js获取数组的交集(补集)
阅读量:6587 次
发布时间:2019-06-24

本文共 1943 字,大约阅读时间需要 6 分钟。

hot3.png

1、(不推荐)刚开始写的时候使用如下的函数

function arrayIntersection ( a, b ){    var ai=0, bi=0;    var result = new Array();    while ( ai < a.length && bi < b.length )    {        if      ( a[ai] < b[bi] ) { ai++; }        else if ( a[ai] > b[bi] ) { bi++; }        else /* they're equal */        {            result.push ( a[ai] );            ai++;            bi++;        }    }    return result;}       //调用var $result = arrayIntersection (m,touResult);
解释:这是网上找到的一段代码,可以找出一部分相同的元素,但不是所有的,其中的原因就在于里面的if判断过程中,会漏掉里面的相同的元素,比如说a数组里面的元素都比b数组里面的第一个元素小,那么这个循环就不会遍历到b数组,最终得到的相同元素就是null

2、因为马上放假,不愿意动脑,就上网又开始找到了一些代码,完美实现效果

Array.prototype.contains = function(obj) {    var i = this.length;    while (i--) {        if (this[i] === obj) {            return true;        }    }    return false;}                 //array扩展出来的contains的方法,写上以后可以直接调用;Array.prototype.each = function(fn){    fn = fn || Function.K;    var a = [];    var args = Array.prototype.slice.call(arguments, 1);    for(var i = 0; i < this.length; i++){        var res = fn.apply(this,[this[i],i].concat(args));        if(res != null) a.push(res);    }    return a;};                    //array扩展出来的each方法Array.prototype.uniquelize = function(){    var ra = new Array();    for(var i = 0; i < this.length; i ++){        if(!ra.contains(this[i])){            ra.push(this[i]);        }    }    return ra;};                    //array扩展出来的uniquelize方法Array.intersect = function(a, b){    return a.uniquelize().each(function(o){return b.contains(o) ? o : null});};                    //实现数组的交集用的时候可以如下:var $result = Array.intersect(touResult,m);      完美实现呀
求补集的时候可以:

Array.complement = function(a, b){return Array.minus(Array.union(a, b),Array.intersect(a, b));}; 求差集的时候可以:Array.minus = function(a, b){return a.uniquelize().each(function(o){return b.contains(o) ? null : o});}; 求并集的时候可以:Array.union = function(a, b){return a.concat(b).uniquelize();};

十个赞

转载于:https://my.oschina.net/leonaLily/blog/396746

你可能感兴趣的文章
Spring Framework 4.2 中的新功能和增强功能
查看>>
动态代理解决网站字符集编码
查看>>
Spring中的AOP(二)——AOP基本概念和Spring对AOP的支持
查看>>
SQL*Plus环境下创建PLUSTRACE角色
查看>>
我所想的GIX4的权限
查看>>
Hbuilder--让手爽,飞一般的编码(二)
查看>>
后台统计
查看>>
React组件: 提取图片颜色
查看>>
3D应用开发中的欧拉角和旋转矩阵
查看>>
爬虫必备技能xpath的用法和实战
查看>>
MacOS下安装Grafana、InfluxData、telegraf
查看>>
RxJava2.0的初学者必备教程(九)
查看>>
一些出的不错的Java面试题(一)
查看>>
记一次omi的项目之旅
查看>>
Android API级别、代号、发布时间及平台亮点整理
查看>>
Redis数据类型(上)
查看>>
安装配置nagios
查看>>
QQ第三方授权登录(带详细源码)
查看>>
string 转换int
查看>>
LLDP(链路层发现协议)
查看>>