【问题标题】:access values of an object javascript访问对象javascript的值
【发布时间】:2021-10-21 07:19:55
【问题描述】:

我是 javascript 的初学者。所以我有这样的基本结构的数据......

{
"status": "active",
"experimental": false,
"expansion": {
    "extension": [
        {
            "valueBoolean": true
        }
    ],
    "contains": [
        {
            "system": "http://snomed.info/sct",
            "code": "8989938493",
            "display": "Acute"
        },
        {
            "system": "http://snomed.info/sct",
            "code": "889080980089",
            "display": "Chronic"
        },
        {
            "system": "http://snomed.info/sct",
            "code": "889080980089",
            "display": "Fragile"
        }
    ]
}

}

我想遍历“contains”并将“display”的值放在一个数组中,这样我就可以在 react 组件中使用它。我目前正在努力实现这一目标。任何帮助将不胜感激。提前致谢。

【问题讨论】:

  • 而实际的问题是?标题谈到访问对象的属性?在问题中它的“如何迭代数组”+“如何访问属性......”。
  • 看看Array.prototype.map()
  • 谢谢。会调查的。

标签: javascript ecmascript-6 iteration destructure


【解决方案1】:

您可以使用map 函数来转换数组:

const myObject = {
"status": "active",
"experimental": false,
"expansion": {
    "extension": [
        {
            "valueBoolean": true
        }
    ],
    "contains": [
        {
            "system": "http://snomed.info/sct",
            "code": "8989938493",
            "display": "Acute"
        },
        {
            "system": "http://snomed.info/sct",
            "code": "889080980089",
            "display": "Chronic"
        },
        {
            "system": "http://snomed.info/sct",
            "code": "889080980089",
            "display": "Fragile"
        }
    ]
}
}

const arr = myObject.expansion.contains.map(({display})=>display)
console.log(arr)

【讨论】:

  • 感谢您的回复。您的代码在这里运行良好,但在我的代码中抛出“Server Error TypeError: Cannot read property 'expansion' of undefined”。获取数据的 Console.log(data) 工作正常。不知道是什么问题。
  • 未处理的运行时错误 ReferenceError: res is not defined
【解决方案2】:

let res = [];
const obj = {
"status": "active",
"experimental": false,
"expansion": {
    "extension": [
        {
            "valueBoolean": true
        }
    ],
    "contains": [
        {
            "system": "http://snomed.info/sct",
            "code": "8989938493",
            "display": "Acute"
        },
        {
            "system": "http://snomed.info/sct",
            "code": "889080980089",
            "display": "Chronic"
        },
        {
            "system": "http://snomed.info/sct",
            "code": "889080980089",
            "display": "Fragile"
        }
    ]
}
}

obj.expansion.contains.forEach(el => res.push(el.display));

console.log(res)

【讨论】:

  • 为什么要重新发明Array.prototype.map()
  • 感谢您的回复。您的代码在这里运行良好,但在我的代码中抛出“Server Error TypeError: Cannot read property 'expansion' of undefined”。获取数据的 Console.log(data) 工作正常。不知道是什么问题。
猜你喜欢
  • 1970-01-01
  • 2013-10-28
  • 2015-06-03
  • 2020-07-08
  • 2016-01-31
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多