[英]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')
您可以直接使用数组操作findIndex
或find
。 文档
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.