打字稿:检查对象是否按值存在于数组中

fir*_*baa 5 javascript filtering typescript ecmascript-6 angular

我有这些数据:

roles = [
{roleId: "69801", role: "ADMIN"}
{roleId: "69806", role: "SUPER_ADMIN"}
{roleId: "69805", role: "RB"}
{roleId: "69804", role: "PILOTE"}
{roleId: "69808", role: "VENDEUR"}
{roleId: "69807", role: "SUPER_RB"}
]
Run Code Online (Sandbox Code Playgroud)

我必须过滤我的表,以检查是否有一个对象包含一个特定的角色值.

我的功能应如下所示:

checkRoleExistence(role){

// if role exists on one of the objects return true
// else returne false
}
Run Code Online (Sandbox Code Playgroud)

使用它我会这样做:

let ifExists = this.checkRoleExistence("PILOTE") ;
Run Code Online (Sandbox Code Playgroud)

我想使用Ecmascript"过滤器"功能.

建议?

Mih*_*nut 15

您可以使用some方法和解构.

let roles = [ {roleId: "69801", role: "ADMIN"}, {roleId: "69806", role: "SUPER_ADMIN"}, {roleId: "69805", role: "RB"}, {roleId: "69804", role: "PILOTE"}, {roleId: "69808", role: "VENDEUR"}, {roleId: "69807", role: "SUPER_RB"} ]

const checkRoleExistence = roleParam => roles.some( ({role}) => role == roleParam)

console.log(checkRoleExistence("ADMIN"));
console.log(checkRoleExistence("RA"));
console.log(checkRoleExistence("RB"));
Run Code Online (Sandbox Code Playgroud)


Suj*_*jay 6

对这里给出的所有答案的一点补充。您可以使用 find() 获取符合您要求的值。

const index = this.roles.findIndex(role=> role.name === 'ADMIN'); if (index >-1) { const value= this.roles[index].roleId); }

这会给你 roleId ,它匹配你的查询