//-------两个数组取交集的方法---------
Array.ExistsSameValues = function(a1, a2) { var exists = false; if(a1 instanceof Array && a2 instanceof Array) { for (var i=0,iLen=a1.length; i<iLen; i++) { for (var j=0,jLen=a2.length; j<jLen; j++) { if (a1[i]===a2[j]) { return true; } } } } return exists; };
//使用说明,a集合为全集 b为子集 例如a=[1,2,3,4,5] b=[1,2,3] function getNotSame(a,b){ var c = []; var tmp = a.concat(b); var o={}; for(var i = 0; i<tmp.length; i++) (tmp[i] in o) ? o[tmp[i]] ++ :o[tmp[i]] = 1; for(x in o) if(o[x] == 1) c.push(x); return c; }
/** * 求一个数组中最大的元素值 * @param tmp Array * @returns {max} */ function getMax(tmp) { var max = tmp[0]; for (var i = 1; i < tmp.length; i++) { if (max < tmp[i]) { max = tmp[i]; } } return max; }
//判断a集合是否真包含集合b function checkAcontainB(a, b) { var ai = 0, bi = 0; // 集合a、b交集 var c = new Array(); while (ai < a.length && bi < b.length) { if (a[ai] < b[bi]) { ai++; } else if (a[ai] > b[bi]) { bi++; } else /* they're equal */{ c.push(a[ai]); ai++; bi++; } } if (c.length < b.length) { return false; } else { return true; } }