доступ к значениям объекта javascript

#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(данные) извлеченных данных работает нормально. не знаю, в чем проблема.