1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- module.exports = intersect;
- function many (sets) {
- var o = {};
- var l = sets.length - 1;
- var first = sets[0];
- var last = sets[l];
-
- for(var i in first) o[first[i]] = 0;
-
- for(var i = 1; i <= l; i++) {
- var row = sets[i];
- for(var j in row) {
- var key = row[j];
- if(o[key] === i - 1) o[key] = i;
- }
- }
-
- var a = [];
- for(var i in last) {
- var key = last[i];
- if(o[key] === l) a.push(key);
- }
-
- return a;
- }
- function intersect (a, b) {
- if (!b) return many(a);
- var res = [];
- for (var i = 0; i < a.length; i++) {
- if (indexOf(b, a[i]) > -1) res.push(a[i]);
- }
- return res;
- }
- intersect.big = function(a, b) {
- if (!b) return many(a);
-
- var ret = [];
- var temp = {};
-
- for (var i = 0; i < b.length; i++) {
- temp[b[i]] = true;
- }
- for (var i = 0; i < a.length; i++) {
- if (temp[a[i]]) ret.push(a[i]);
- }
-
- return ret;
- }
- function indexOf(arr, el) {
- for (var i = 0; i < arr.length; i++) {
- if (arr[i] === el) return i;
- }
- return -1;
- }
|