Дана многомерная структура - вывести элементы. как обратиться к пустому объекту не имеющему ключа?
Задача:
Дано:
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)
}
}