比较两个数组并使用javascript删除相同的值
问题描述:
我有两个数组,名为 arr
和 ar
。假设 ar
有7个元素, arr
有6个元素。如果元素在两者中都相同,我想删除一个元素,否则将其分配给一个新变量。到目前为止我有这个:
I have two arrays, named arr
and ar
. Suppose ar
has 7 element and arr
has 6 elements. I want to remove an element if it is the same in both, otherwise assign it to a new variable. I have this so far:
var arr = new Array(); // Elements are 65,66,67,68,69,70
var newID = new Array();
var ar = new Array(); // 64,65,66,67,68,69,70
if (ar.length != arr.length) {
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < ar.length; j++) {
if (arr[i] == ar[j]) {
delete ar[i];
arr.splice(i, 1);
break;
}
newID = ar[i];
}
}
for (var i = 0; i < ar.length; i++) {
newID = ar[i];
}
这不能正常工作,因为它会与未定义的值进行比较。请帮我纠正。
This does not work properly as it will compare with an undefinded value. Please help me correct it.
答
这里还有一个使用 reduce
var arr1 = [1, 2, 3, 4, 5];
var arr2 = [1, 3, 5, 7, 9];
var result = arr1.reduce(function (prev, value) {
var isDuplicate = false;
for (var i = 0; i < arr2.length; i++) {
if (value == arr2[i]) {
isDuplicate = true;
break;
}
}
if (!isDuplicate) {
prev.push(value);
}
return prev;
}, []);
alert(JSON.stringify(result.concat(arr2)));
已编辑
var arr1 = [1, 2, 3, 4, 5];
var arr2 = [1, 3, 5, 7, 9];
arr2 = arr2.reduce(function (prev, value) {
var isDuplicate = false;
for (var i = 0; i < arr1.length; i++) {
if (value == arr1[i]) {
isDuplicate = true;
break;
}
}
if (!isDuplicate) {
prev.push(value);
}
return prev;
}, []);
alert(JSON.stringify(arr2));