Reputation: 335
I want to return true or false after comparing two arrays.
First Array Here:
const permissionsArray = [
{
"groupName": "User",
"permissions": [
"Permissions.Users.View",
"Permissions.Users.Create",
"Permissions.Users.Edit",
"Permissions.Users.Delete"
]
}, {
"groupName": "Role",
"permissions": [
"Permissions.Roles.View",
"Permissions.Roles.Create",
"Permissions.Roles.Edit",
"Permissions.Roles.Delete"
]
},
]
Object Here which contain permissions Array:
const userPermissionArray =
{
"id": "cdfda4d3-ea1a-4662-a611-2d2e52b772b0",
"name": "ABP Manager",
"description": "ABP Manager",
"usersCount": 4,
"isActive": false,
"permissions": [
"Permissions.Users.View",
"Permissions.Users.Create",
"Permissions.Users.Edit",
"Permissions.Users.Delete"
]
}
I want to compare [permissionsArray.permissions] and [userPermissionArray.permissions].
I tried, but I failed. My code here:
console.log(
userPermissionArray.permissions
.map(roleItem => roleItem === userPermissionArray
.map(item => item.permissions.map(item => item))
)
);
I was trying to return 'true' or 'false'.
Upvotes: 1
Views: 1383
Reputation: 11
let x = ['a', 'b', 'c', 'd']
let y = ['b', 'c']
let cont=[]
let rs = x.reduce((a, b) => {
return {
...a,
[b]: y.includes(b)
}
}, {})
for(let i=0; i < x.length; i++){
if((rs[x[i]])){
cont.push({
data: x[i],
selected : true
})
}else
cont.push({
data: x[i],
selected : false
})
}
console.log(cont)
Upvotes: 1
Reputation: 1143
try to compare like this:
let permissionsA = [
"Permissions.Users.View",
"Permissions.Users.Create",
"Permissions.Users.Edit",
"Permissions.Users.Delete"
]
let permissionsB = [
"Permissions.Users.View",
"Permissions.Users.Create",
"Permissions.Users.Edit",
]
let rs = permissionsA.reduce((a, b) => {
return {
...a,
[b]: permissionsB.includes(b)
}
}, {})
console.log(rs)
/*
{
Permissions.Users.Create: true,
Permissions.Users.Delete: false,
Permissions.Users.Edit: true,
Permissions.Users.View: true
} */
Upvotes: 0
Reputation: 3920
You can flat
the permission list for ease of comparison and then use some
function to check any entry exist
let flatPermissions = permissionsArray.map(e => e["permissions"]).flat();
let result = userPermissionArray.permissions.some(i => flatPermissions.includes(i));
console.log(result);
Upvotes: 1