首页 > 解决方案 > 如何检查对象内的数组是否包含特定值?

问题描述

我正在寻找使用角度组件检查管理员角色的最佳方法。

我在组件中有以下代码

checkIfIsAdmin(): any {
  let user_string = localStorage.getItem("currentUser");

  if (!isNullOrUndefined([user_string])) {
    console.log(user_string);
    return true;
  } else {
    return null;
  }
}

我需要检查ROLE_ADMIN我收到的格式如下:

{
    "longId": 4,
    "name": "bbb",
    "email": "bbb@gmail.com",
    "userName": "bbb",
    "token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI0IiwiaWF0IjoxNTU5NDk0NTczLCJleHAiOjE1NTk0OTQ4NzN9.XmSHywZv09b4BR9-NxyCTVPF33pLsk3QtTEXQMQF4YHW7i27Ghj2Uh3WZAegpG4rdSImKcm1wMgJsPLpHcTyew",
    "roles": [
        "ROLE_USER",
        "ROLE_ADMIN"
    ]
}

我不知道如何在if条件内迭代角色,有人可以帮助我吗?

标签: typescript

解决方案


根据您的代码,我假设-

user_string = {"longId":4,"name":"bbb","email":"bbb@gmail.com","userName":"bbb","token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI0IiwiaWF0IjoxNTU5NDk0NTczLCJleHAiOjE1NTk0OTQ4NzN9.XmSHywZv09b4BR9-NxyCTVPF33pLsk3QtTEXQMQF4YHW7i27Ghj2Uh3WZAegpG4rdSImKcm1wMgJsPLpHcTyew","roles":["ROLE_USER","ROLE_ADMIN"]}

如果我的理解是正确的,那么请执行以下操作 -

checkIfIsAdmin(): any {
  let user_string = localStorage.getItem("currentUser");
  const user = JSON.parse(user_string);
  if (user ["roles"]) {
    const roles = user["roles"];
    const index = roles.indexOf("ROLE_ADMIN");
    return index >= 0;
  } else {
    return false;
  }
}

推荐阅读