比较两个数组并使用javascript删除相同的值

比较两个数组并使用javascript删除相同的值,javascript,Javascript,我有两个数组,分别名为arr和ar。假设ar有7个元素,arr有6个元素。如果两个元素相同,我想删除一个元素,否则将其分配给一个新变量。到目前为止,我有: 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) {

我有两个数组,分别名为
arr
ar
。假设
ar
有7个元素,
arr
有6个元素。如果两个元素相同,我想删除一个元素,否则将其分配给一个新变量。到目前为止,我有:

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];
                }
var arr=new Array();//元素为65,66,67,68,69,70
var newID=新数组();
var ar=新数组();//64,65,66,67,68,69,70
如果(应力长度!=应力长度){
对于(变量i=0;i

这无法正常工作,因为它将与未定义的值进行比较。请帮助我更正它。

您可以尝试以下操作:

var-arr=[1,2,3,4,5,6,7];
var-ar=[2,4,6,8,10];
var newID=[];
对于(变量i=0;i警报(newID);
您可以尝试以下操作:

var-arr=[1,2,3,4,5,6,7];
var-ar=[2,4,6,8,10];
var newID=[];
对于(变量i=0;i警报(newID);
我只想添加一个js库--
lodash

var _ = require('lodash');

var array1 = [1,2,3,4,5];
var array2 = [3,1,5];

_.difference(array1,array2)
// returns [ 2, 4 ]

我只想添加一个js库--
lodash

var _ = require('lodash');

var array1 = [1,2,3,4,5];
var array2 = [3,1,5];

_.difference(array1,array2)
// returns [ 2, 4 ]

我会给你以下的解决方案

var ar = [1,2,3,4,5,6,7];
var arr = [3,6,7,8,9,2];

//ES5
var mergedArray = ar.concat(arr);
var newId = [];
for(var i=0;i<mergedArray.length;i++){
    var id = mergedArray[i];
    if(newId.indexOf(id) !== -1) continue;
    newId.push(id);
}
//or smartter
var newId = ar.concat(arr).filter(function(id, pos, self) {
    return self.indexOf(id) === pos;
});
//or ES6
var mergedArray = ar.concat(arr);
var newId = [];
for(let id of mergedArray){
    if(newId.indexOf(id) !== -1) continue;
    newId.push(id);
}
//or smarter ES6
var newId = ar.concat(arr).filter((id, pos, self) => self.indexOf(id) === pos);
var-ar=[1,2,3,4,5,6,7];
var-arr=[3,6,7,8,9,2];
//ES5
var mergedArray=ar.concat(arr);
var newId=[];
对于(var i=0;i self.indexOf(id)==pos);

选择权在你。:

我将给你以下解决方案

var ar = [1,2,3,4,5,6,7];
var arr = [3,6,7,8,9,2];

//ES5
var mergedArray = ar.concat(arr);
var newId = [];
for(var i=0;i<mergedArray.length;i++){
    var id = mergedArray[i];
    if(newId.indexOf(id) !== -1) continue;
    newId.push(id);
}
//or smartter
var newId = ar.concat(arr).filter(function(id, pos, self) {
    return self.indexOf(id) === pos;
});
//or ES6
var mergedArray = ar.concat(arr);
var newId = [];
for(let id of mergedArray){
    if(newId.indexOf(id) !== -1) continue;
    newId.push(id);
}
//or smarter ES6
var newId = ar.concat(arr).filter((id, pos, self) => self.indexOf(id) === pos);
var-ar=[1,2,3,4,5,6,7];
var-arr=[3,6,7,8,9,2];
//ES5
var mergedArray=ar.concat(arr);
var newId=[];
对于(var i=0;i self.indexOf(id)==pos);

您可以选择。:

这里还有一个使用
reduce

var arr1=[1,2,3,4,5];
var arr2=[1,3,5,7,9];
var结果=arr1.reduce(函数(上一个,值){
var isDuplicate=假;
对于(变量i=0;i警报(JSON.stringify(result.concat(arr2));
这里还有一个使用
reduce

var arr1=[1,2,3,4,5];
var arr2=[1,3,5,7,9];
var结果=arr1.reduce(函数(上一个,值){
var isDuplicate=假;
对于(变量i=0;i
alert(JSON.stringify(result.concat(arr2));
你可以使用一个带有两个指针的while循环:while(iar中重复的
ar
吗?是的,只想删除剩余元素的ar你只需要做与我做的相反的事情,不要连接:)你可以编辑你的代码吗?我已经尝试过使用3 for循环,但可能需要时间,我只想在从这两个循环中删除后,ar中剩下的元素arrays@BDhara所以,您只想删除
ar
中的重复项吗仅对剩余元素进行ar您只需执行与我所做的相反的操作,而不进行串联:)您可以编辑您的代码吗?我已尝试使用3 for循环及其工作方式,但可能需要时间