如何访问另一个对象内部的对象

时间:2019-12-19 14:48:28

标签: javascript json object

我有一个对象,该对象的系数属性埋在外部对象的六层深处。
我需要将整个对象传递到后端的PHP文件中,以便对其进行处理以输入到MySQL数据库中。
我似乎无法通过使用深度克隆(使用LoDash)或传播运算符{...}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/

进一步的实验表明,无论我做什么,当系数看起来像这样时,最终都会得到空数组的系数:

Coefficients inside outer object

如果将对象另存为全局变量(Chrome),则可以像这样访问,更改和操作系数的元素:

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

这似乎是一个简单的任务,抓取对象,将其转换为JSON并将其交给后端进行处理,但这已经困扰了我几天。

2 个答案:

答案 0 :(得分:1)

如果我采用您的代码段并将系数设置为等于[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);

但是您发布的内容的系数数组为空。我认为您可能对数据是什么和/或何时填充数据感到困惑

答案 1 :(得分:1)

根据OP的要求,我将尝试提供我的建议作为答案。

您似乎将系数声明为数组,但是无论何时出现填充系数,您都将其视为对象。

如果您使用.push,则可能会执行以下操作:

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

我相信,您需要在填充它的地方做的就是将.push数据包装到一个实际的对象中。

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

我希望这会有所帮助,很难在不看到系数填充位置的情况下为您提供确切的解决方案。

相关问题