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.