在javaScript中迭代后更改对象数组中的单个值
这是我的密码:在javaScript中迭代后更改对象数组中的单个值,javascript,reactjs,Javascript,Reactjs,这是我的密码: let user = [ {id: 1, name: "Chris", active: "true"}, {id: 2, name: "James", active: "true"}, {id: 3, name: "Jeremy", active: "true"}, ]; handleClick = () => { for(let i in user) { if (Object.hasOwnProperty.call(use
let user = [
{id: 1, name: "Chris", active: "true"},
{id: 2, name: "James", active: "true"},
{id: 3, name: "Jeremy", active: "true"},
];
handleClick = () => {
for(let i in user) {
if (Object.hasOwnProperty.call(user, i)) {
user[i].active = false;
}
}
};
嗨
我已经看了很多话题,但我没有找到我的问题的答案
正如您在单击(handleClick)时所看到的,我想将活动状态修改为“true”到“false”,反之亦然。但我希望这种情况只发生在我单击的用户身上,而不是所有用户。每个用户都有自己的按钮
我开始想也许我应该以某种方式使用id。在函数中传入用户的id,然后添加if语句
(id) =>{ user.forEach( obj =>{
If(obj.id === id)
obj.active = !obj.active;
})}
以下是解决方案:
let user = [
{id: 1, name: "Chris", active: "true"},
{id: 2, name: "James", active: "true"},
{id: 3, name: "Jeremy", active: "true"},
];
handleClick = id => {
user.forEach( obj => {
if(obj.id === id)
obj.active = !obj.active;
});
};
使用
ES6
处理此函数如果您试图使用boolean
您应该编写true
或false
而不使用引号
或双引号
让用户=[{
id:1,
姓名:“克里斯”,
主动:正确
},
{
id:2,
姓名:“詹姆斯”,
主动:正确
},
{
id:3,
姓名:“杰里米”,
主动:正确
},
];
函数handleClick(id){//handleClick=(id)=>{
const result=user.map(obj=>
obj.id==id?{…obj,
活动:!obj.active
}:obj
)
console.log(结果)
}
点击
我看到你使用了一个,所以你要找的是这样的:
handleClick=id=>{
让arr=this.state.users.map(user=>{
设u={…user};
如果(u.id==id){
u、 活动=!u.active;
}
返回u;
});
this.setState({users:arr});
}
查看此演示:
让用户=[
{id:1,名称:“Chris”,活动:true},
{id:2,名称:“James”,活动:false},
{id:3,名字:“Jeremy”,活动:true}
];
类Demo扩展了React.Component{
状态={users};
colorize=active=>active?'green':'red';
handleClick=id=>{
让arr=this.state.users.map(user=>{
设u={…user};
如果(u.id==id){
u、 活动=!u.active;
}
返回u;
})
this.setState({users:arr});
}
渲染(){
返回(
{this.state.users.map(user=>(
{user.name}
{user.active.toString()}
this.handleClick(user.id)}>
改变状态
))}
);
}
}
ReactDOM.render(,document.getElementById('app'))代码>
.row{
显示器:flex;
弯曲方向:行;
}
.用户{
字体大小:粗体;
}
.用户::之后{
内容:“:”;
}
.地位{
左边距:10px;
}
钮扣{
保证金:15px 5px 5px 5px;
边界半径:10px;
}
红色{
颜色:红色;
}
格林先生{
颜色:绿色;
}
这是来自ReactJS应用程序吗?handleClick
函数是如何调用的?是的,先生:)但我不想把全部内容都放在这里。我更喜欢从JS开始,然后进行调整。我这样问是因为user
数组中的元素如何与DOM元素关联很重要。好吧,我明白了!让我在我的代码中做一些排序并删除所需内容:)请使用代码片段或jsfiddle.Damn发布一个工作示例。这看起来很棒!马上试试这个:)@JeremyBertin很高兴我能帮上忙@JeremyBertin很高兴提供帮助,请选择解决您问题的最佳答案作为接受答案或+1
向上投票!(这是你的选择!)谢谢你的帮助:)问题已经解决了,但有不同的方法总是好的。