Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javaScript中迭代后更改对象数组中的单个值_Javascript_Reactjs - Fatal编程技术网

在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
向上投票!(这是你的选择!)谢谢你的帮助:)问题已经解决了,但有不同的方法总是好的。