function qc(a) { // 去重 var r = []; for(var i = 0; i < a.length; i ++) { var flag = true; var temp = a[i]; for(var j = 0; j < r.length; j ++) { if(temp === r[j]) { flag = false; break; } } if(flag) { r.push(temp); } } return r; } function jj(a, b) { // 交集 var result = []; for(var i = 0; i < b.length; i ++) { var temp = b[i]; for(var j = 0; j < a.length; j ++) { if(temp === a[j]) { result.push(temp); break; } } } return qc(result); } function bj(a, b) { // 并集 return qc(a.concat(b)); } function cj(a, b) { // 差集 var clone = a.slice(0); for(var i = 0; i < b.length; i ++) { var temp = b[i]; for(var j = 0; j < clone.length; j ++) { if(temp === clone[j]) { clone.splice(j,1); } } } return qc(clone); }
最主要的就是原数组中本来就有重复的数据怎么算?毕竟集合的定义中是不能重复的,我现在提供了一个qc()去重的函数,并且另外三个方法也都是去重后的结果。
还有一点,这四个函数都不会修改原来的数组
希望能帮到你!