Свойство переменной объекта не определено, даже если это не так

#javascript #json

Вопрос:

Я пытаюсь прочитать свойство объекта json с помощью переменных. Если я использую переменные, я получаю ошибку, в то время как если я использую свойства, это работает.

JSON:

 {
  "homebrews": {
    "books": {
      "title": "text."
    },
    "cards": {
      "template": {
        "id": 0,
        "name": "myName"
      }
    }
  }
}
 

Вызываемая функция

 createHomebrew('card');
 

функция:

 function createHomebrew(type) {

  var homebrew;

  $.getJSON('/data-files/templateHomebrew.json', function(json) {

   var id = type   's'; // cards

   homebrew = json.homebrews[id].template // json.homebrews[id] is undefined

  });
 

Вместо

 console.log(json.homebrews.cards.template); // Object { id: 0, name: "myName"}
 

введите описание изображения здесь

Комментарии:

1. Что ты пытаешься сделать?

2. Вы звоните createHomebrew('card') или createHomebrew(card) где card находится переменная со 'card' значением as?

3. @Spectric обновил сообщение, я пытаюсь сделать homebrew = card.шаблон файла json.

4. @KelvinSchoofs сообщение обновлено, я называю строку «карточкой».

5. Откуда вы знаете json.homebrews[id] , что это не определено? Где вы используете homebrew переменную?

Ответ №1:

Решено, поскольку настройка id = "cards" сработала, по какой-то причине функция, вызванная с createHomebrew('card') помощью, не распознала карту как строку, хотя console.log(typeof id) и вернула строку. Поэтому я добавил id = id.toString();

 function createHomebrew(type) {

  var homebrew;

  $.getJSON('/data-files/templateHomebrew.json', function(json) {

   var id = type   's';
   id = id.toString();

   homebrew = json.homebrews[id].template

  });