js Array 交集 并集 差集 去重

来源:互联网 发布:火车票买票软件 编辑:程序博客网 时间:2024/05/01 15:47
  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"]));  
0 0
原创粉丝点击