[英]How to update value inside object in object in javascript?
我有一個組合 BDM 的對象。 它包括一個對象內的一個對象。
一旦對象具有特定字符串,我想更新一個值。
我可以使用相同的值更新對象,但是,我無法使用子對象獲取動態值。
這是我擁有的對象。
$data.timerObjJson;
[
{
"persistenceId": 322,
"persistenceId_string": "322",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"recommandation": "Recommandation 1",
"timerTask": [
{
"persistenceId": 508,
"persistenceId_string": "508",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task1",
"startdate": "2019-02-13",
"enddate": "2019-02-13",
"statusTask": "decline",
"declineReason": ""
},
{
"persistenceId": 511,
"persistenceId_string": "508",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task1",
"startdate": "2019-02-13",
"enddate": "2019-02-13",
"statusTask": "decline",
"declineReason": ""
}
],
"statusRec": "In process"
},
{
"persistenceId": 323,
"persistenceId_string": "323",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"recommandation": "Recommandation 2",
"timerTask": [
{
"persistenceId": 509,
"persistenceId_string": "509",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task2",
"startdate": "2019-02-13",
"enddate": "2019-03-02",
"statusTask": "decline",
"declineReason": ""
},
{
"persistenceId": 509,
"persistenceId_string": "509",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task2",
"startdate": "2019-02-13",
"enddate": "2019-03-02",
"statusTask": "decline",
"declineReason": ""
}
],
"statusRec": "In process"
}
]
這就是我試圖返回statusTask
和
$data.getDone:
var obj = [];
for(var i in $data.timerObjJson){
for(var j in $data.timerObjJson[i].timerTask){
var thisObj = {};
thisObj = $data.timerObjJson[i].timerTask[j];
obj.push(thisObj);
}
}
var objArray=[];
for (var i = 0; i < obj.length; i++) {
objArray.push(obj[i].statusTask);
}
function isBelowThreshold(currentValue) {
return currentValue == "done";
}
return objArray.every(isBelowThreshold)
我嘗試使用 let 更新statusRec
如下
var data = $data.timerObjJson;
var done = $data.getDone; //true or false
let arr = data;
const status = "In process";
if (done == true){
arr.find(v => v.statusRec == status).statusRec = "DONE";
}
return data;
但我需要更新的是每個statusRec
取決於timerTask.statusTask
的狀態。
例如,一旦所有timerTask.statusTask
更改為“完成”,則statusRec
應更新為“完成”。
這是更新對象的方法:
var object = { "name": "aziz", "address": { "ville": "MTL", "street": { "name": "Bonnier", "number": 8012 } } } object = { ...object, address: { ...object.address, street: { ...object.address.street, number: 9000 } } } console.log(object); var object2 = { "name": "aziz", "address": { "ville": "MTL", "street": { "name": "Bonnier", "number": 8012 } } } /* 2 method */ object2.address.street.number = 10000; console.log(object2);
這實際上是一個很好的問題,如果我正確理解了這個問題,那么您正在尋找 timerTask.statusTask 是否具有兩個對象的“done”值,它將 statusRec 更改為同一對象的“done”,以便您可以達到該方法在 JavaScript 中使用過濾器數組方法是一個例子:
let array = [ { "persistenceId": 322, "persistenceId_string": "322", "persistenceVersion": 0, "persistenceVersion_string": "0", "recommandation": "Recommandation 1", "timerTask": [ { "persistenceId": 508, "persistenceId_string": "508", "persistenceVersion": 0, "persistenceVersion_string": "0", "title": "Task1", "startdate": "2019-02-13", "enddate": "2019-02-13", "statusTask": "decline", "declineReason": "" }, { "persistenceId": 511, "persistenceId_string": "508", "persistenceVersion": 0, "persistenceVersion_string": "0", "title": "Task1", "startdate": "2019-02-13", "enddate": "2019-02-13", "statusTask": "decline", "declineReason": "" } ], "statusRec": "In process" }, { "persistenceId": 323, "persistenceId_string": "323", "persistenceVersion": 0, "persistenceVersion_string": "0", "recommandation": "Recommandation 2", "timerTask": [ { "persistenceId": 509, "persistenceId_string": "509", "persistenceVersion": 0, "persistenceVersion_string": "0", "title": "Task2", "startdate": "2019-02-13", "enddate": "2019-03-02", "statusTask": "decline", "declineReason": "" }, { "persistenceId": 509, "persistenceId_string": "509", "persistenceVersion": 0, "persistenceVersion_string": "0", "title": "Task2", "startdate": "2019-02-13", "enddate": "2019-03-02", "statusTask": "done", "declineReason": "" } ], "statusRec": "In process" } ] function TheSameInAllObjects(status) { if (!(status && status.length)) return true; // If there is no status, or if it is empty, they are all the same, aren't they? let compare = status[0].statusTask; return status.every( item => item.statusTask === compare); } array.filter(data => { let obj = {} data['timerTask'].filter(result => { if(result.statusTask === 'done'){ obj = data if(TheSameInAllObjects(obj['timerTask']) === true){ return data.statusRec = 'done' } } }) }) console.log(array)
您可以在此處查看兩者是否具有相同的“完成”值
let array = [ { "persistenceId": 322, "persistenceId_string": "322", "persistenceVersion": 0, "persistenceVersion_string": "0", "recommandation": "Recommandation 1", "timerTask": [ { "persistenceId": 508, "persistenceId_string": "508", "persistenceVersion": 0, "persistenceVersion_string": "0", "title": "Task1", "startdate": "2019-02-13", "enddate": "2019-02-13", "statusTask": "decline", "declineReason": "" }, { "persistenceId": 511, "persistenceId_string": "508", "persistenceVersion": 0, "persistenceVersion_string": "0", "title": "Task1", "startdate": "2019-02-13", "enddate": "2019-02-13", "statusTask": "decline", "declineReason": "" } ], "statusRec": "In process" }, { "persistenceId": 323, "persistenceId_string": "323", "persistenceVersion": 0, "persistenceVersion_string": "0", "recommandation": "Recommandation 2", "timerTask": [ { "persistenceId": 509, "persistenceId_string": "509", "persistenceVersion": 0, "persistenceVersion_string": "0", "title": "Task2", "startdate": "2019-02-13", "enddate": "2019-03-02", "statusTask": "done", "declineReason": "" }, { "persistenceId": 509, "persistenceId_string": "509", "persistenceVersion": 0, "persistenceVersion_string": "0", "title": "Task2", "startdate": "2019-02-13", "enddate": "2019-03-02", "statusTask": "done", "declineReason": "" } ], "statusRec": "In process" } ] function TheSameInAllObjects(status) { if (!(status && status.length)) return true; // If there is no status, or if it is empty, they are all the same, aren't they? let compare = status[0].statusTask; return status.every( item => item.statusTask === compare); } array.filter(data => { let obj = {} data['timerTask'].filter(result => { if(result.statusTask === 'done'){ obj = data if(TheSameInAllObjects(obj['timerTask']) === true){ return data.statusRec = 'done' } } }) }) console.log(array)
我已經更新了我的答案以實現您的目標
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.