Typescript 以简单的方式查找两个对象数组之间的差异

Ani*_*ket 0 javascript ecmascript-5 typescript angular angular9

我有一个如下所示的数组对象

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" }
]
Run Code Online (Sandbox Code Playgroud)

考虑到 id 对于每个对象都是唯一的,我需要输出为

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" }
]
Run Code Online (Sandbox Code Playgroud)

有很多答案都在使用 for 循环或比较器。我试图找到的是非常简单的解决方案,而不是编码复杂的东西。

Ani*_*ket 6

幸运的是,我能够弄清楚并找到非常简单的答案。只需要一根内线!!!

this.allowedRoles=this.allRoles.filter(role=> !this.assignedRoles.some(present=> present.id==role.id));
Run Code Online (Sandbox Code Playgroud)