I have users
array (of objects) inside a JavaScript object. Every user has an isActive
property:
let groups = {
groupId: 0,
userRights: {
users: [{
name: 'John',
isActive: true
},
{
name: 'Marry',
isActive: true
}
]},
set userStatus(user) {
this.userRights.users.forEach(function(user) {
// On this condition, change users statuses
if(parseInt(this.groupId) !== 1){
user.isActive = false;
}
});
},
}
console.log(groups.userRights.users);
I was expecting my setter to change every user's isActive
proprty to false
so I could see it in the console already changes.
What am doing wrong?
You are defining the setter, but not calling it anywhere.
You need to call the setter you defined using groups.userStatus = value;
.
And on a side note, I renamed the setter to userStatusAll
as I believe it's more specific.
let groups = {
groupId: 1,
userRights: {
users: [{
name: 'John',
isActive: true
},
{
name: 'Marry',
isActive: true
}
]},
//defining the setter
set userStatusAll(user) {
this.userRights.users.forEach(function(user) {
user.isActive = false;
});
},
}
groups.userStatusAll = false; //calling the setter with value of false
console.log(groups.userRights.users);