#javascript #ecmascript-6 #iteration #destructure
Вопрос:
Я начинаю с 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"
}
]
}
}
Я хочу повторить «содержит» и поместить значения «отображать» в массив, чтобы я мог использовать его в компоненте react. В настоящее время я изо всех сил пытаюсь этого достичь. Любая помощь будет оценена по достоинству. Заранее спасибо.
Комментарии:
1. И в чем же на самом деле проблема? В названии говорится о доступе к свойству объекта? В вопросе «как выполнить итерацию массива» «как получить доступ к свойству…».
2. Взгляните на
Array.prototype.map()
3. Спасибо. буду разбираться в этом.
Ответ №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)
Комментарии:
1. Спасибо вам за ответ. Ваш код здесь работает нормально, но выдает «Ошибка типа ошибки сервера: Не удается прочитать свойство «расширение» неопределенного» в моем коде. Console.log(данные) извлеченных данных работает нормально. не знаю, в чем проблема.
2. Необработанная ошибка во время выполнения Ошибка ссылки: res не определен
Ответ №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)
Комментарии:
1. Зачем повторное изобретение
Array.prototype.map()
?2. Спасибо вам за ответ. Ваш код здесь работает нормально, но выдает «Ошибка типа ошибки сервера: Не удается прочитать свойство «расширение» неопределенного» в моем коде. Console.log(данные) извлеченных данных работает нормально. не знаю, в чем проблема.