[英]change one value in array of objects
我有对象users
数组:
let state = {
users: [
{id: 1, name: 'Igor', selected: false},
{id: 2, name: 'Anton', selected: false},
{id: 3, name: 'Vasya', selected: false},
{id: 4, name: 'Pete', selected: false},
{id: 5, name: 'Dan', selected: false}
], ....
和与此对象一起工作的函数:
export function selectUser(userId) {
if (state.users.find(item => item.id == userId).selected == false) {
/* some code */
//[needed] Code to update the user property selected to true
} else {
/* some other code */
//[needed] Code to update the user property selected to true
}
emitChange();
}
如何做到这一点,而不会覆盖整个数组,奇怪的是什么都想不起来
find()方法返回要更新的对象。 因此,首先调用它,并将其分配给一个变量,然后测试它是否存在,如果可以,则使用它。
export function selectUser(userId) {
var user = state.users.find(item => item.id == userId);
if (user != 'undefined'){
if (user.selected == false) {
/* some code */
user.name = 'New Name';
// etc
} else {
/* some other code */
}
}
emitChange();
}
根据在对与错情况下的评论,这应该起作用:
export function selectUser(userId) {
var user = state.users.find(item => item.id == userId);
if (user && user.selected == false) {
user.selected = true;
} else {
/* some other code */
}
emitChange();
}
如果要切换属性,则
export function selectUser(userId) {
var user = state.users.find(user => user.id == userId);
var isSelected = user.selected;
// state.users.forEach(user => user.selected = false ); deselect others
user.selected = !isSelected;
emitChange();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.