@CreativeStory

Как получить значение в многомерном массиве в javascript?

Есть массив:

const arr = [
{
    variation: {
        attributes: {
            "attribute_pa_obem": "500-gr",
            "attribute_pa_czvet-produkta": "c-110-goluboj"
        }
    }
},
{
    variation: {
        attributes: {
            "attribute_pa_obem": "500-gr",
            "attribute_pa_czvet-produkta": "c-110-goluboj"
        }
    }
},
{
    variation: {
        attributes: {
            "attribute_pa_obem": "500-gr",
            "attribute_pa_czvet-produkta": "c-110-goluboj"
        }
    }
}
]


Нужно всегда получать значение attribute_pa_obem и attribute_pa_czvet-produkta первого элемента.
Я получаю так:
Object.values(Object.values(arr[0])[0].attributes)

Это допустимый способ или есть более элегантный/правильный подход?
  • Вопрос задан
  • 454 просмотра
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
arr[0] // первый элемент, объект:

{
    variation: {
        attributes: {
            "attribute_pa_obem": "500-gr",
            "attribute_pa_czvet-produkta": "c-110-goluboj"
        }
    }
}


Обратиться к его свойству variation:
arr[0].variation // там объект с единственным свойством "attributes"


Взять его свойство attributes:
arr[0].variation.attributes // там объект с искомыми двумя свойствами


К ним можно так обратиться:
arr[0].variation.attributes["attribute_pa_obem"] // "500-gr"
arr[0].variation.attributes["attribute_pa_czvet-produkta"] // "c-110-goluboj"


Или удобнее один раз получить референс на объект, и брать его свойства:
const ref = arr[0].variation.attributes;
ref["attribute_pa_obem"] // "500-gr"
ref["attribute_pa_czvet-produkta"] // "c-110-goluboj"


Квадратные скобки и кавычки нужны только для второго свойства, т.к. там знак «минус» используется.
А к первому можно обращаться без кавычек-скобок:
arr[0].variation.attributes.attribute_pa_obem // "500-gr"
// или
ref.attribute_pa_obem // "500-gr"
Ответ написан
arr.map(el => Object.keys(el.variation.attributes));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы