How to check if an array contains a specific value?
有以下功能:
1 2 3 | const role: string = tokenPayload.params.role.map(r => { return r.value; }) [0]; |
它返回以下结果:
如果
它是可能的两个全功能的返回值在相同的格式为第一exemple吗?
教育的"角色"将被用于一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | canActivateChild(route: ActivatedRouteSnapshot): boolean { const helper = new JwtHelperService(); const expectedRole = route.data.expectedRole; const token = this.authService.getToken(); const tokenPayload = helper.decodeToken(token); const role: string = tokenPayload.params.role.map(r => { return r.value; }) [0]; console.log(role); if (!this.authService.isAuthenticated() || role !== expectedRole) { this.router.navigate(['/admin']); return false; } return true; } |
成分:路由器
1 2 3 4 5 6 7 8 9 10 11 12 13 | { path: 'container-users', component: ContainerUsersComponent, canActivateChild: [AuthGuard], data: { expectedRole: 'admin' }, children: [ { path: '', component: ListUsersComponent }, { path: 'list-users', component: ListUsersComponent }, { path: 'form-new-user', component: FormNewUserComponent } ] } |
似乎应用程序中的用户可以有多个角色,您要做的是检查附加到用户的这些角色中是否有一个是
因此,我将直接检查所需角色,而不是使用
1 | const hasExpectedRole = tokenPayload.params.role.some(r => r.value === expectedRole) |
后来,在
1 | if (... || !hasExpectedRole) |
不要使用map生成的数组的第一个元素,而是使用字符串数组并检查它是否包含
1 2 3 4 5 6 7 8 9 | roles = tokenPayload.params.role.map(r => { return r.value; }); // Use the following function (roles.indexOf(expectedRole) == -1); // Instead of this role !== expectedRole; |
看看如何在javascript中查找数组是否包含特定的字符串?-这解释了如何检查值数组是否包含单个值。