首页 > 解决方案 > 打字稿:按值检查对象是否存在于数组中

问题描述

我有这个数据:

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"}
]

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

我的功能应该是这样的:

checkRoleExistence(role){

// if role exists on one of the objects return true
// else returne false
}

要使用它,我会这样做:

let ifExists = this.checkRoleExistence("PILOTE") ;

我想使用Ecmascript的“过滤器”功能。

建议?

标签: javascriptarraysangulartypescriptecmascript-6

解决方案


您可以使用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"));


推荐阅读