Current File : //usr/lib/node_modules/bower/lib/node_modules/intersect/index.js |
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;
}