2

I have 2 object lists with 2 fields:

let users1 = [{ name: 'barney',  uuid: 'uuid3'},
              { name: 'barney',  uuid: 'uuid1'},
              { name: 'barney',  uuid: 'uuid2'}];

let users2 = [{ name: 'joe',  uuid:'uuid5'},
              { name: 'joe',  uuid: 'uuid1'}, 
              { name: 'joe',  uuid: 'uuid2'}];

I want to delete the objects inside each list with the intersection over the uuid.

let users1 = [{ name: 'barney',  uuid: 'uuid3'}]; // object with uuid1 and uuid2 deleted
let users2 = [{ name: 'joe',  uuid:'uuid5'}];     // object with uuid1 and uuid2 deleted

in the code below I am extracting the uuids from the obj lists and put them into a new array each

let a =[];  
let b = [];
a = users1.map(s => s.uuid); // uuids from list 1 ['uuid3', 'uuid1', 'uuid2']
b = users2.map(s => s.uuid); // uuids from list 2 ['uuid5', 'uuid1', 'uuid2']

then use lodash to get the intersection:

let e = [];
e = _.intersection(a,b); // intersection = [uuid1, uuid2] 

we can use the list e to do the remove on users1 and users2

but then I am not really sure on how to do the delete

any idea, suggestion or example would be appreciated?

1 Answer 1

3

Removing the intersection is actually finding the difference - use _.differenceBy() to filter each user by finding the items with a uuid that doesn't exist on the other user:

const users1 = [{ name: 'barney',  uuid: 'uuid3'},
              { name: 'barney',  uuid: 'uuid1'},
              { name: 'barney',  uuid: 'uuid2'}];

const users2 = [{ name: 'joe',  uuid:'uuid5'},
              { name: 'joe',  uuid: 'uuid1'}, 
              { name: 'joe',  uuid: 'uuid2'}];
              
const user1n = _.differenceBy(users1, users2, 'uuid');
const user2n = _.differenceBy(users2, users1, 'uuid');

console.log(user1n);
console.log(user2n);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.