Searched and tried and no luck so far.
var newUsers = [{name: 'rich', id: 25}, {name: 'lauren', id: 35}, {name: 'dave', id: 28} ]
var likedUsers = [{name: 'derek', id: 39}, {name: 'rich', id: 25}, {name: 'brian', id: 38} ]
What I want returned is:
var leftUsers = [{name: 'lauren', id: 35}, {name: 'dave', id: 28} ]
basically without the rich
object as this is a duplicate. I only care about the id
key.
I have tried:
newUsers.forEach((nUser) => {
likedUsers.forEach((lUser) => {
if (nUser.id !== lUser.id){
leftUsers.push(nUser)
}
})
})
but obviously this won't work as this will just add them all as soon as they don't match.
if possible would like an es6 solution using forEach/map/filter
thanks
You can do this with
filter()
andsome()
methods.You can create a Set of ids that are found in
likedUsers
, and filter thenewUsers
by checking if an id is in the Set:With
array.prototype.filter
to filter out items that exists inlikedUsers
andarray.prototype.findIndex
to check the existence, it should be: