簡體   English   中英

如何在javascript中更新對象中對象內的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM