How to find out what was removed from an array of string?

JLeong
Mega Sage

Hi Guys,

 

I need you assistance.....

 

I have an array of names, lets call it original members  ["jo", "john", "jan" ]...

I have another array of names, lets call it new members ["jo", "john", "kevin", "joe" ] ...

 

I have 2 variables to populate as to which names were added and removed.

Based on my list,  Kevin and Joe are new members and Jan was removed. Could someone please assist as to how I can accomplish this.

 

Thank you!

 

 

1 ACCEPTED SOLUTION

Its as easy as

//You just need to revers them
//This will return "jan" in an array
var removedMembers = au.diff(origMembers, newMembers);
//This will return "kevin" and "joe" in an array
var addedMembers = au.diff(newMembers, origMembers);

View solution in original post

7 REPLIES 7

Bert_c1
Kilo Patron

Hi @JLeong ,

 

What Riya posted requires Javascript ES6, and can't be tested in Global scope in Scripts background.  You can specify Javascript mode in Scoped Apps. You can test the above in Scripts Background in a App Scope where Javascript ES6/ES7 is enabled.  What does work in Global scope in Scripts Background is the following (Based on DrewW post).

 

var origMembers =  ["jo", "john", "jan" ];
var newMembers = ["jo", "john", "kevin", "joe" ];
var au = new ArrayUtil();
var removedMembers = au.diff(origMembers, newMembers);
gs.info('removedMembers = ' + removedMembers);
var intersection = au.intersect(origMembers, newMembers);
gs.info('intersection = ' + intersection);
// check for additions from orig in new, new is assumed to have more elements
var additions = [];
for (i=0; i < newMembers.length; i++) {
   for (j=0; j < intersection.length; j++) {
       if (newMembers[i] == intersection[j])
          break;
   }
   if (j == intersection.length)
      additions.push(newMembers[i]);
}
gs.info('additions = ' + additions);

 I didn't find an easy way to get 'additions' in ArrayUtil.

Its as easy as

//You just need to revers them
//This will return "jan" in an array
var removedMembers = au.diff(origMembers, newMembers);
//This will return "kevin" and "joe" in an array
var addedMembers = au.diff(newMembers, origMembers);

JLeong
Mega Sage

Oh wow! Thank you guys. I will remember this.

I didn't know it was that easy.