簡體   English   中英

如何訪問另一個對象深處的對象

[英]How to access an object deep inside another object

我有一個對象,它具有一個被隱藏在外部對象六層深處的系數屬性。
我需要將整個對象傳遞給我們后端的一個 PHP 文件,以處理它以將其輸入到我們的 MySQL 數據庫中。
我似乎無法通過使用深度克隆(使用 LoDash)或擴展運算符{...}JSON.parse(JSON.stringify(obj));來獲取整個對象JSON.parse(JSON.stringify(obj)); .
在每種情況下,我最終都會得到一組空白的方括號,其中包含我感興趣的數據。
我最終得到的是這個(參見系數的最后一個空白條目):

{
  "dostuff": "saveCalibrationStart",
  "debug": true,
  "configurationID": 0, 
  "computername": "REDACTED",
  "username": "REDACTED",
  "notes": "none",
  "softwarename": "CalRun",
  "softwareversion": "V12.0.0 beta > 1.13",
  "systemid": "42",
  "devices": [
    {
      "modelNumberID": "12",
      "serialNumber": "09998",
      "position": 1
    }
  ],
  "references": [
    {
      "modelNumberID": "12",
      "calibrationDeviceTypeID": 11,
      "serialNumber": "09999",
      "measurands": [
        {
          "measurementTypeID": "13",
          "measurand": "Phenanthrene",
          "calibrationDate": "2019-01-01",
          "coefficients": []
        }
      ]
    }
  ]
}

這個人在傳播運算符上的頁面似乎很有希望,但我得到了同樣的東西: https : //flaviocopes.com/javascript-spread-operator/

進一步的實驗表明,無論我做什么,我最終都會得到系數的空數組,它們應該如下所示:

外部對象內部的系數

如果我將對象保存為全局變量 (Chrome),我就可以像這樣訪問、更改和操作系數的元素:

temp1.references[0].measurands[0].coefficients

這似乎是一項簡單的任務,抓取對象,將其轉換為 JSON 並將其交給后端進行處理,但它已經讓我煩惱了幾天。

如果我使用您的代碼片段並將系數設置為等於[1,2,3,4] ,它會起作用:

 const temp1= {"dostuff":"saveCalibrationStart","debug":true,"configurationID":0,"computername":"REDACTED","username":"REDACTED","notes":"none","softwarename":"CalRun","softwareversion":"V12.0.0 beta 1.13","systemid":"42","devices":[{"modelNumberID":"12","serialNumber":"09998","position":1}],"references":[{"modelNumberID":"12","calibrationDeviceTypeID":11,"serialNumber":"09999","measurands":[{"measurementTypeID":"13","measurand":"Phenanthrene","calibrationDate":"2019-01-01","coefficients":[1,2,3,4]}]}]}; console.log(temp1.references[0].measurands[0].coefficients);

但是您發布的內容確實為系數提供了一個空數組。 我想你可能對你的數據是什么和/或它何時被填充有點困惑

根據 OP 的要求,我將嘗試提供我建議的答案。

您似乎將系數聲明為數組,但無論您在哪里填充系數,您都將其視為對象。

如果你正在使用 .push 你可能會做這樣的事情:

coefficients.push(
drift: value,
offset: value,
etc etc
)

我相信,您需要在填充它的地方做的就是將 .push 數據包裝到一個實際對象中。

coefficients.push({
drift: value,
offset: value,
etc etc
})

我希望這會有所幫助,如果不查看填充系數的位置,很難為您提供確切的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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