-1

I have an array object like below

allRoles = 
[
    { id: "0", name: "Tester", description: "Role is testing" },
    { id: "1", name: "Developer", description: "Role is Developer" },
    { id: "2", name: "Admin", description: "Role is Admin" },
    { id: "3", name: "Manager", description: "Role is Manager" },
    { id: "4", name: "Reviewer", description: "Role is Reviewer" }
]

assignedRoles = 
[
    { id: "0", name: "Tester", description: "Role is testing" },
    { id: "4", name: "Reviewer", description: "Role is Reviewer" }
]

Considering id as unique for each object I need output as

allowedRoles = 
[
    { id: "1", name: "Developer", description: "Role is Developer" },
    { id: "2", name: "Admin", description: "Role is Admin" },
    { id: "3", name: "Manager", description: "Role is Manager" }
]

There are many answers which are making use of for loops or comparator. What I am trying to find out is very simple solution rather than coding complex things.

Aniket
  • 310
  • 1
  • 4
  • 22

1 Answers1

4

Luckily I was able to figure out and found very simple answer. Just one liner!!!

this.allowedRoles=this.allRoles.filter(role=> !this.assignedRoles.some(present=> present.id==role.id));
Aniket
  • 310
  • 1
  • 4
  • 22