Чтение вложенных объектов, JavaScript. (Дубликат)

Это из моего текущего курса Udacity. Я перепробовал несколько ответов, все, кажется, не удаются Я использовал точечную и скобочную нотацию. Даже пытался их перепутать. Пробовал к console.log() их. Пробовал какое-то время петлю. Я просмотрел несколько страниц здесь и на MDV, в которых говорится о нотации / скобках. Либо есть ошибка реестра, либо я все еще делаю что-то не так.

Я не ищу однозначного ответа, так как я ищу кого-то, чтобы "объяснить, как мне пять", что я делаю неправильно и как я могу сделать это правильно.


Чтение вложенных объектов Напишите выражение, которое выводит, как сказать привет на португальском языке:

const greetings = {
  hello: [{
    english: 'hi',
    french: 'bonjour',
    portuguese: 'oi'
  }],
  goodbye: [{
    english: 'bye',
    french: 'au revoir',
    portuguese: 'tchau'
  }]
};

greetings.hello.portuguese;

greetings['hello']['portuguese'];

greetings['hello'][2];

Это то, что я считаю правильным, хотя они не приняты.

2 ответа

У меня был такой:

const greetings = {
  hello: {
    english: 'hi',
    french: 'bonjour',
    portuguese: 'oi'
  },
  goodbye: {
    english: 'bye',
    french: 'au revoir',
    portuguese: 'tchau'
  }
};

Если вы выводите как предупреждение, console.log, document.write, независимо от того, как вы хотите сделать вывод:

alert(greetings.hello.portuguese);
console.log(greetings.hello.portuguese);

работал у меня.

Я думаю, что это ошибка udacity.

Вы забываете, что объект, который содержит свойство 'portuguese', находится внутри массива. Таким образом, вам нужно будет сначала получить доступ к массиву (в данном случае, к первому и единственному элементу массива), прежде чем вы сможете получить доступ к португальскому свойству объекта:

const greetings = {
  hello: [{
    english: 'hi',
    french: 'bonjour',
    portuguese: 'oi'
  }],
  goodbye: [{
    english: 'bye',
    french: 'au revoir',
    portuguese: 'tchau'
  }]
};

console.log(greetings.hello[0].portuguese); // hello

console.log(greetings.goodbye[0]['portuguese']); // goodbye

Теперь вы можете использовать точку / скобку для доступа к свойству

Ответ

greetings.hello.portuguese; привет ['привет']['португальский'];

Другие вопросы по тегам