繁体   English   中英

进入一个数组,该数组是没有 for 循环的对象的一部分,javascript

[英]Get to inside an array which is part of an object without a for loop, javascript

我有这个有效的代码:

var roles = user.getRoles()
   for (var i = 0; i < roles.length; i++){
      if (Roles[i].getName()== ‘Admin’){
        --gets to this line
   }
}

但是我想知道我是否可以在没有 for/if 循环的情况下获得 TRUE/FALSE,如下所示对我不起作用:

 if (user.getRoles().getName().indexOf('Admin') >-1){
    -does not get to this line
 }

给出错误:user.getRoles().getName 不是函数

如果我打印出角色,返回的是:UserRole@718816d、UserRole@1ae91200、UserRole@48baf10b、UserRole@777d6d90、UserRole@34ad99fb、UserRole@6606e47c、UserRole@79ab7316d、UserRole@1ae91200、UserRole@48baf10b、UserRole@6606e47c、UserRole@79ab731d、UserRole@65886868R用户角色@4e792483,用户角色@1f8ca93a

所以我从提供的信息中猜测, getName()方法是在角色数组内的对象上定义的。 所以user.getRoles()返回一个数组,你不能在该数组上调用getName()方法

我认为你可以做的是user.getRoles().find(el => el.getName() === 'Admin')

您可以直接使用数组操作findIndexfind 文档

var roles = user.getRoles()
var i = roles.findIndex(r => r.getName() === 'Admin')
if(i > -1) {
    roles[i] // can access ith element
}

在这种情况下,使用.includes似乎对您.includes 您似乎在搜索已知字符串 ('Admin')

var roles = user.getRoles()
   if (roles.includes('Admin')) {
       - gets here if true
   }
}

https://www.digitalocean.com/community/tutorials/js-array-search-methods

if(user.getRoles()?.find(role => role.getName() === 'admin')){
   // do stuff
}

问号用于检查是否有来自 getRoles 的值。

Find 将返回 null 或角色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM