//都得判断数组 or 转数组。
// 可用一个零时数组转接交叉集合,在给setA。
// 两个字典转接
// 累计计数,每个元素频次
//循环的优化。。。。记录A,B len
Array.intersect = function () {
var args = Array.prototype.slice.call(arguments);
var setA = args[0] ? args[0] : [];
var setB = args[1] ? args[1] : [];
var dict = Object.create(null);
var count = 1;
return function intersection() {
var args = Array.prototype.slice.call(arguments);
if (args.length === 2) {
setA = args[0]
setB = args[1]
count = 2;
}
if (args.length === 1) {
setB = args[0]
count++;
}
var len = setA.length > setB.length ? setA.length : setB.length;
for (var i = 0; i < len; i++) {
if (i < setA.length) {
if (!dict[setA[i]]) {
dict[setA[i]] = 1;
} else {
dict[setA[i]]++;
}
}
if (i < setB.length) {
if (!dict[setB[i]]) {
dict[setB[i]] = 1;
} else {
dict[setB[i]]++;
}
}
}
var arr = [];
for (var key in dict) {
object[key] === count && arr.push(key * 1)
/* ... */
}
Array.intersect.res = setA = arr;
// Array.intersect.res = setA = Object.keys(dict);
return intersection;
}
}