简体   繁体   中英

Compare two different array elements remove the match elements in node js

I have two array objects as below:

var arrayOne = [{"Name":"job","SubscriptionGUID":"8ead7edfa460"},{"Name":"TestJobSQL","SubscriptionGUID":"09e7dbff7779"}];
var arrayTwo = [{"UserSubscriptionID":13,"SubscriptionGUID":"8ead7edfa460","Name":"job"}];
var arrayDiff = [];

I need to compare the element Name and remove matched element only show not matching array element in arrayDiff

as per above example My new arrayDiff should be

var arrayDiff = [{"Name":"TestJobSQL"}]; or var arrayDiff = ['TestJobSQL'];

if the arrayTwo is

var arrayTwo = [];

then arrayDiff should return

var arrayDiff = [{"Name":"TestJobSQL"},{"Name":"Job"}]; or  var arrayDiff = ['TestJobSQL', 'Job'];

Try this

var arrayOne = [{"Name":"job","SubscriptionGUID":"8ead7edfa460"},{"Name":"TestJobSQL","SubscriptionGUID":"09e7dbff7779"}];
var arrayTwo = [{"UserSubscriptionID":13,"SubscriptionGUID":"8ead7edfa460","Name":"job"}];
var arrayDiff = [];
arrayOne.forEach(function(item, index){
    var found = false;
    arrayTwo.forEach(function(item1, index1){
        if(item.Name == item1.Name) {
            found = true;
        }   
    })
    if(found == false) {
        arrayDiff.push({ Name : item.Name});
    }
})
console.log(arrayDiff);

An easy way would be using lodash's and _.differenceBy method.

It let's you make two arrays diff based on the property you want.

var createDiffArray = function(attrName,arrayOne,arrayTwo){
   var arrayDif = [];
   for (let element of arrayOne){
      if (arrayTwo.find( x => x[attrName] === element[attrName]) !== undefined){
          arrayDif.push(element[attrName]);
      }  
   }
   return arrayDif;
}

 var arrayOne = [{"Name":"job","SubscriptionGUID":"8ead7edfa460"},{"Name":"TestJobSQL","SubscriptionGUID":"09e7dbff7779"}]; var arrayTwo = [{"UserSubscriptionID":13,"SubscriptionGUID":"8ead7edfa460","Name":"job"}]; //arrayTwo=[]; var result = []; arrayOne.forEach(function(e){ if(arrayTwo.length==0){ result.push(e.Name); }else{ arrayTwo.forEach(function(e2){ if(e.Name!=e2.Name){ result.push(e.Name); } }) } }) console.log(result); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM