JS 数组间的操作(交集,并集、差集)

以下是js数组之间常用的操作,如交集,并集、差集等。

迭代

each是一个集合迭代函数,可以将一个函数作为参数和一组可以选的参数。依次将集合的每一个元素和可选参数用函数进行计算。

 /**fn 进行迭代判定的函数
*零个或多个可选的用户自定义参数 */
Array.prototype.each = function(fn){
fn = fn || Functuon.K;
var a = [];
var args = Array.prototype.slice.call(arguments,10);
for(var i=0;i<this.length;i++){
var res = fn.apply(this,this[i],i).concat(agrs);
if(res != null) {
a.push(res);
}
}
}

Array.prototype.slice(arguments, 0); 这个写法可以用于function() {} 内,这样可以将函数的参数列表转换成一个真正的数组。



例:var a = [1,2,3,4].each(function(x){return x > 2 ? x : null});

唯一化数组

/** 得到一个数组不重复的元素集合**/
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.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();
}

补集

Array.complement = function(a,b){
return Array.minus(Array.union(a,b),Array.intersect(a,b));
}

交集

Array.intersect = function(a,b){
return a.uniquelize().each(function(o){
return b.contains(o)?0:null;
})
}

JS 数组间的操作的更多相关文章

  1. js 数组常用的操作函数整理

    平时多做企业应用开发,抱着实用为主,对前端技术理解得比较肤浅,下面就是肤浅地对 js 数组的属性和方法及对它操作的 jquery 方法做些记录: js 数组是 js 内建的一个非常强大数据类型,由于 ...

  2. js数组的常用操作

    数组合并 var arr=[1,"abc","张三","122"]; var b=["今天天气不错","适合学 ...

  3. js 数组的所有操作

    js的数组操作有很多,这里记录了常用的和不常用的数组操作方法. 一.数组的创建 数组的创建有两种方法,一种是通过字面量,另一种是通过Array构造函数. 1.字面量 var num1 = [1,2,3 ...

  4. js 数组的crud操作

    增加push(); 向数组尾添加元素unshift(); 向数组头添加元素向数组指定下标添加元素:可以用Array提供的splice(); var arr = ['a','b','c']; arr.s ...

  5. js数组设置值操作

    js中给数组中添加新值的方式: var flow=[]; for(var i=0;i<21;i++){ flow.push(Math.floor(Math.random()*(30+((i%12 ...

  6. js数组的一些操作

    原文地址:flash很好玩  http://www.cnblogs.com/yuzhongwusan/archive/2008/12/15/1355378.html arr = new Array(1 ...

  7. JS 数组相关的操作函数

    // 1.数组拼接 concat() var a = [1, 2]; var b = [3, 4]; console.log(a.concat(b)); // [1, 2, 3, 4] // 2.数组 ...

  8. js数组的常见操作( push、pop、unshift、shift、splice、concat、 join)的用法

    1.数组添加删除 头部或尾部( push().pop().unshift().shift() ) 例2.数组尾部添加 push()方法可向数组的末尾添加一个或多个元素,并返回新的长度 语法:array ...

  9. js几种基本数据类型及之间转换与java的不同、js数组一些常见操作

    js的三大组成部分及各自作用: 1.ECMAScript:规范了js的基本语法和功能 2.DOM:js操作页面元素的API 3.BOM:js操作浏览器部分功能的API 如果通过<script s ...

随机推荐

  1. 清理c盘的文件

    C:/Users/用户名/AppData里面默认有三个文件夹,分别是Local,LocalLow,Roaming,简单地来说,都是用来存放软件的配置文件和临时文件的,里面有很多以软件公司或者软件名称命 ...

  2. checkbox设置单选的的两种方式

    一.如果 <input name="ck" type="checkbox">是页面加载就有的 $("#input[name=ck]&quo ...

  3. Codeforces 快速竞技#4

    快速竞技#4 A–Duff and Meat588A = =这题不知道怎么写题解了.. 直接上code---. #include<bits/stdc++.h> #include<st ...

  4. java中多线程的两种创建方式

    一丶继承Thread类实现多线程 第一步:继承Thread类第二步:重写run()方法第三步:创建继承了Thread类的对象 , 调用start()方法启动. //线程创建方式一 : /* 第一步:继 ...

  5. hql语法及自定义函数(含array、map讲解) + hive的java api

    本博文的主要内容如下: .hive的详细官方手册    .hive支持的数据类型   .Hive Shell .Hive工程所需依赖的jar包  .hive自定义函数 .分桶4   .附PPT hiv ...

  6. php连接mysql并读取数据

    <?php $server_name="localhost:3306"; //数据库服务器名称 $username="root"; // 连接数据库用户名 ...

  7. CH#56C(LCA+dfs序)

    题目传送门 性质是:把节点dfs序以后,异象石按这个序号排序,然后相邻两两求树上距离,这些距离的和除以二就是最小斯坦纳树. 插入删除的具体操作是根据我们上述性质,用一个set维护dfn,比如插入x,则 ...

  8. Android 暗码表

    转自: http://blog.csdn.net/jiangshide/article/details/8192834 不同手机厂商可能会隐藏或修改暗码,部份暗码要谨慎使用,因为可能令手机失去原有的功 ...

  9. MessageDigest简介(与MD5加密有关)

    参考文章:http://blog.sina.com.cn/s/blog_4f36423201000c1e.html 参考来源:http://blog.csdn.net/hudashi/article/ ...

  10. 利用lsof去查看Unix/Linux进程打开了哪些文件

    利用lsof去查看Unix/Linux进程打开了哪些文件 今天用了一下lsof,发现这个linux的小工具,功能非常强大而且好用. 我们可以方便的用它查看应用程序进程打开了哪些文件或者对于特定的一个文 ...