js Array 交集 并集 差集 去重

  1. ///集合取交集  
  2. Array.intersect = function () {  
  3.     var result = new Array();  
  4.     var obj = {};  
  5.     for (var i = 0; i < arguments.length; i++) {  
  6.         for (var j = 0; j < arguments[i].length; j++) {  
  7.             var str = arguments[i][j];  
  8.             if (!obj[str]) {  
  9.                 obj[str] = 1;  
  10.             }  
  11.             else {  
  12.                 obj[str]++;  
  13.                 if (obj[str] == arguments.length)  
  14.                 {  
  15.                     result.push(str);  
  16.                 }  
  17.             }//end else  
  18.         }//end for j  
  19.     }//end for i  
  20.     return result;  
  21. }  
  22.   
  23. //集合去掉重复  
  24. Array.prototype.uniquelize = function () {  
  25.     var tmp = {},  
  26.         ret = [];  
  27.     for (var i = 0, j = this.length; i < j; i++) {  
  28.         if (!tmp[this[i]]) {  
  29.             tmp[this[i]] = 1;  
  30.             ret.push(this[i]);  
  31.         }  
  32.     }  
  33.   
  34.     return ret;  
  35. }  
  36. //并集  
  37. Array.union = function () {  
  38.     var arr = new Array();  
  39.     var obj = {};  
  40.     for (var i = 0; i < arguments.length; i++) {  
  41.         for (var j = 0; j < arguments[i].length; j++)  
  42.         {  
  43.             var str=arguments[i][j];  
  44.             if (!obj[str])  
  45.             {  
  46.                 obj[str] = 1;  
  47.                 arr.push(str);  
  48.             }  
  49.         }//end for j  
  50.     }//end for i  
  51.     return arr;  
  52. }  
  53.   
  54. //2个集合的差集 在arr不存在  
  55. Array.prototype.minus = function (arr) {  
  56.     var result = new Array();  
  57.     var obj = {};  
  58.     for (var i = 0; i < arr.length; i++) {  
  59.         obj[arr[i]] = 1;  
  60.     }  
  61.     for (var j = 0; j < this.length; j++) {  
  62.         if (!obj[this[j]])  
  63.         {  
  64.             obj[this[j]] = 1;  
  65.             result.push(this[j]);  
  66.         }  
  67.     }  
  68.     return result;  
  69. };  
  70.   
  71. console.log(Array.intersect(["1""2""3"], ["2""3""4""5""6"]));//[2,3]  
  72. console.log([1, 2, 3, 2, 3, 4, 5, 6].uniquelize());//[1,2,3,4,5,6]  
  73. console.log(Array.union(["1""2""3"], ["2""3""4""5""6"], ["5""6""7""8""9"]))  
  74. console.log(["2""3""4""5""6"].minus(["1""2""3"]));  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值