js如何合并两个数组并删除重复的项
是不是
并集
的意思呀?
哎呀,数组可以包含乱七八糟的元素呀,很复杂的呀,部分代码如下:
// 求2个数组的并集
$._combineTwoArrays = function(first, second) {
if (!$.isArray(first) || !$.isArray(second)) {
throw new Error('$._combineTwoArrays function must be set two Array type params');
}
var merged = first.concat(second), tlen = merged.length, combined = [];
for (var i = 0; i < tlen; i++) {
var elem = merged.shift(), flag = false;
if (i === 0)
combined.push(elem);
for (var j = 0; j < combined.length; j++) {
var c = combined[j];
if ($.isArray(elem)) {
if (!$.isArray(c)) {
flag = true;
}
else if (!$._isTheSameArrays(elem, c)) {
flag = true;
} else {
flag = false;
break;
}
} else if ($.type(elem) === 'object') {
if (!$._isTheSameObjects(elem, c)) {
flag = true;
} else {
flag = false;
break;
}
} else {
if (c !== elem) {
flag = true;
} else {
flag = false;
break;
}
}
}
if (flag)
combined.push(elem);
}
return combined;
};
你可以遍历第二个数组,每次都便利下第一个数组,如果在第一个数组里不存在,则push到第一个里面
<script>
var a = [1,2,3,4,5];
var b = [1,2,4,5];
alert(tab(a,b));
function tab(arr1,arr2){
var arr = arr1.concat(arr2);
var lastArr = [];
for(var i = 0;i<arr.length;i++)
{
if(! unique(arr[i],lastArr))
{
lastArr.push(arr[i]);
}
}
return lastArr;
}
function unique(n,arr)
{
for(var i=0;i<arr.length;i++)
{
if(n==arr[i]){
return true;
}
}
return false;
}
</script>
var b = [3,4,5,6];
function haveSameNum(arrA,x){
for(var i in arrA){
if(arrA[i] == x) return true;
}
}
function combine(a,b){
for(var i in a){
if(haveSameNum(b,a[i])) continue;
b.push(a[i]);
}
return b;
}