Дана многомерная структура - вывести элементы. как обратиться к пустому объекту не имеющему ключа?

Задача:
Дано:

let data = [
    {
        1: [
            'data111',
            'data112',
            'data113',
        ],
        2: [
            'data121',
            'data122',
            'data123',
        ],
    },
    {
        1: [
            'data211',
            'data212',
            'data213',
        ],
        2: [
            'data221',
            'data222',
            'data223',
        ],
    },
    {
        1: [
            'data411',
            'data412',
            'data413',
        ],
        2: [
            'data421',
            'data422',
            'data423',
        ],
    },
];

Вывести в консоль элементы.

При выводе в console.log(key); в первом цикле = вывод:

{
  "1": [
    "data411",
    "data412",
    "data413"
  ],
  "2": [
    "data421",
    "data422",
    "data423"
  ]
}

А при выводе console.log(data[key]) = undefined.

почему? что сделала не так?

и как обратиться к пустому объекту не имеющему ключа??

Код:

for (let key of data) {

    for (let subKey in data[key]) {

        let obj = data[key];
        for (let name of obj) {

            console.log(name)

        }
    }
}

Ответы (2 шт):

Автор решения: Pet Linux

Оператор of в JavaScript итерирует не ключи, а значения.
Поэтому, в вашем случае можно сделать так, с помощью in:

for (let key in data) {
    for (let subKey in data[key]) {
        let obj = data[key];
        
        for (let name in obj) {
            console.log(name)
        }
    }
}

Я улучшил форматирование кода, потому что в текущем виде его сложно читать.

Для того, чтобы выводились элементы, а не ключи, можно сделать так:

for (let key in data) {
    for (let subKey in data[key]) {
        let obj = data[key];
        
        for (let name in obj) {
            console.log(obj[name])
        }
    }
}

Если что-то непонятно, спрашивайте.

→ Ссылка
Автор решения: Kate Blbn
let data = [
    {
        1: [
            'data111',
            'data112',
            'data113',
        ],
        2: [
            'data121',
            'data122',
            'data123',
        ],
    },
    {
        1: [
            'data211',
            'data212',
            'data213',
        ],
        2: [
            'data221',
            'data222',
            'data223',
        ],
    },
    {
        1: [
            'data411',
            'data412',
            'data413',
        ],
        2: [
            'data421',
            'data422',
            'data423',
        ],
    },
],
    subObj = 0,
    obj = 0;
for ( let key in data ) {
subObj = data[key];
for ( let subKey in subObj ) {
 obj = subObj[subKey]; 
console.log(obj)
}
} 
→ Ссылка