Angular 打字稿更新 class 如果元素在数组中
Angular typescript update class if element is in array
我在Angular12做一个APP。在我的component.ts我有一个字符串数组[]像
AccessRoles["AA","BB"]
在另一边我有一个 class 这样的
export class UserRole {
Id :string;
Active:boolean;
}
我的 class 有这个值 UserRole
"UserRole": [
{
"id": "AA",
"Active": "false"
},
{
"id": "BB",
"Active": "false"
},
{
"id": "CC",
"Active": "false"
},
]
当 UserRole
中的元素在 AccessRoles
中时,我需要设置 Active = true
我可以使用嵌套的 foreach 来完成,但是性能很低。
我所说的性能不佳是指使用嵌套 ForEach 的不良做法。任何不使用嵌套 ForAEach 的解决方案都是可以接受的。
如回答所述, 它有帮助,但我需要让我的对象具有相同的记录数。如果我过滤,我将丢失那些 Active 为假的记录。
我需要的答案是这样的
"UserRole": [
{
"id": "AA",
"Active": "true"
},
{
"id": "BB",
"Active": "true"
},
{
"id": "CC",
"Active": "false"
},
]
谢谢
您可以使用Set
来了解AccessRole 中是否存在UserRole,以避免嵌套循环。尝试以下 -
const accessRolesSet = new Set(AccessRoles /*your accessroles string array*/);
for(let r = 0; r < UserRole.length; r++) {
if(accessRolesSet.has(UserRole[r].id)) {
UserRole[r].active = true;
}
}
正如其他人所建议的那样,filter
会起作用,但不会设置 active = true。
希望对你有帮助。
我在Angular12做一个APP。在我的component.ts我有一个字符串数组[]像
AccessRoles["AA","BB"]
在另一边我有一个 class 这样的
export class UserRole {
Id :string;
Active:boolean;
}
我的 class 有这个值 UserRole
"UserRole": [
{
"id": "AA",
"Active": "false"
},
{
"id": "BB",
"Active": "false"
},
{
"id": "CC",
"Active": "false"
},
]
当 UserRole
中的元素在 AccessRoles
我可以使用嵌套的 foreach 来完成,但是性能很低。
我所说的性能不佳是指使用嵌套 ForEach 的不良做法。任何不使用嵌套 ForAEach 的解决方案都是可以接受的。
如回答所述,
我需要的答案是这样的
"UserRole": [
{
"id": "AA",
"Active": "true"
},
{
"id": "BB",
"Active": "true"
},
{
"id": "CC",
"Active": "false"
},
]
谢谢
您可以使用Set
来了解AccessRole 中是否存在UserRole,以避免嵌套循环。尝试以下 -
const accessRolesSet = new Set(AccessRoles /*your accessroles string array*/);
for(let r = 0; r < UserRole.length; r++) {
if(accessRolesSet.has(UserRole[r].id)) {
UserRole[r].active = true;
}
}
正如其他人所建议的那样,filter
会起作用,但不会设置 active = true。
希望对你有帮助。