こんにちは私は内部配列を持ち、配列の各オブジェクトがid要素を持つjsonオブジェクトを更新しています。id要素に基づいて、inout idに一致する要素の1つを更新しますが、複数のオブジェクトを変更しています。私のソースコードとコンソールログを以下に示します。これは問題を理解するのに役立ちます。
updateUserData(event,id){
var elementName=event.target.name;
console.log('id='+id+', element name='+elementName);
var userData=this.state.user_data;
console.log('User Data before change ='+JSON.stringify(userData));
for(var i=0;i<userData.sports.length;i++){
for(var j=0; j<userData.sports[i].ticket_detail.length;j++){
if(userData.sports[i].ticket_detail[j].id==id){
for(var k=0;k<userData.sports[i].ticket_detail[j].ticket.length;k++){
if(userData.sports[i].ticket_detail[j].ticket[k].paramname==event.target.name){
userData.sports[i].ticket_detail[j].ticket[k].value=event.target.value;
console.log('user data after change ='+JSON.stringify(userData));
this.setState({user_data:userData});
return;
}
}
}
}
}
}
value=h
id=0, element name=name
User Data before change =
{"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 "、"タイプ":"text "、" value ":" "}]、" id ":2}]}、{" name ":" Carrom "、" ticket_detail ":[]}]、" tournament_id ":1}
user data after change =
{"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 ":" h "}、{" 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 ":" h "}、{" 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": "h" }、{"label": "Email:"、 "paramname": "email"、 "type": "text"、 "value": ""}、{"label": "Phone:"、 "paramname": "電話"、 "タイプ": "text "、" value ":" "}]、" id ":2}]}、{" name ":" Carrom "、" ticket_detail ":[]}]、" tournament_id ":1}
入力id = 0であっても、abobe jsonから確認できますが、id 0、1、および2のjsonオブジェクトが変更されています。誰かがこの問題を解決するのを手伝ってもらえますか?
問題を見つけました。この問題は、配列の各要素が共通の要素へのhavinv参照であったために発生していました。それが私がそれらのいずれかを変更していた理由であり、すべてが変更されました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加