[英]conditional break or exit a loop in reactjs
In my source code I want to break nested loops based on some condition is met. 在我的源代码中,我想根据满足的某些条件打破嵌套循环。 I have used return and break but does not work.
我已经使用了返回和中断功能,但是没有用。 Even for break I get build error.
即使是休息,我也会遇到构建错误。 Can someone help me.
有人能帮我吗。 My code is given below:
我的代码如下:
updateUserData(event,id){
alert(id);
var elementName=event.target.name;
alert('element name = '+elementName);
var userData=this.state.user_data;
var found=false;
userData.sports.map(function(sport){
sport.ticket_detail.map(function(ticket){
alert(ticket.id);
if(ticket.id==id){
alert('matched');
ticket.ticket.map(function(element){
alert(element.paramname)
var str1 = element.paramname;
var str2 = event.target.name;
if(element.paramname==event.target.name){
alert('sport = '+sport.name+' category = '+ticket.cat+' id = '+ticket.id+' paramname = '+element.paramname);
element.value='hitesh';
found=true;
return;
}
})
}
if(found){
alert('found1');
return;
}
})
if(found){
alert('found2');
return;
}
})
console.log('updated='+JSON.stringify(userData));
this.setState({user_data:userData});
}
It seems you do not intend to map any values. 似乎您不打算映射任何值。 So just go for a simple for-loop instead like this:
因此,只需进行一个简单的for循环,而不是像这样:
updateUserData(event,id){
alert(id);
var elementName=event.target.name;
alert('element name = '+elementName);
var userData=this.state.user_data;
for(let sport in userData.sports){
for(let ticket in sport.ticket_detail){
alert(ticket.id);
if(ticket.id==id){
alert('matched');
for(let element in ticket.ticket){
alert(element.paramname);
var str1 = element.paramname;
var str2 = event.target.name;
if(element.paramname==event.target.name){
alert('sport = '+sport.name+' category = '+ticket.cat+' id = '+ticket.id+' paramname = '+element.paramname);
element.value='hitesh';
console.log('updated='+JSON.stringify(userData));
this.setState({user_data:userData});
return;
}
}
}
}
}
}
Or you could use Array.prototype.some to test whether at least one element in the array passes the test implemented by the provided function. 或者,您可以使用Array.prototype.some来测试数组中的至少一个元素是否通过了由提供的函数实现的测试。
I am getting this error if I run your code as it is ncaught ReferenceError: sport is not defined at RegisterWindow.updateUserData (index.js:51705) If I add var like this (var sport in userData.sports) then I skip that error but then alert(sport.name); 如果由于错误而运行您的代码,则会出现此错误ReferenceError:在RegisterWindow.updateUserData(index.js:51705)上未定义Sport(运动)未在此添加var(在userData.sports中为var sport),然后跳过该错误但是然后是alert(sport.name); produces undefined .
产生undefined。
JSON is JSON是
{"total_tickets":3,"total_amount":2124,"htmlid_counter":3,"sports":[{"name":"Badminton","ticket_detail":[{"cat":"Men Singles","formid":102,"ticket":[{"label":"Name:","paramname":"name","type":"text","value":""},{"label":"Email:","paramname":"email","type":"text","value":""},{"label":"Phone:","paramname":"phone","type":"text","value":""}],"id":0},{"cat":"Men Singles","formid":102,"ticket":[{"label":"Name:","paramname":"name","type":"text","value":""},{"label":"Email:","paramname":"email","type":"text","value":""},{"label":"Phone:","paramname":"phone","type":"text","value":""}],"id":1},{"cat":"Men Singles","formid":102,"ticket":[{"label":"Name:","paramname":"name","type":"text","value":""},{"label":"Email:","paramname":"email","type":"text","value":""},{"label":"Phone:","paramname":"phone","type":"text","value":""}],"id":2}]},{"name":"Carrom","ticket_detail":[]}],"tournament_id":1}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.