Доступ к объекту JSON в JSON Array Javascript - PullRequest
0 голосов
/ 18 ноября 2018

Мне нужно получить доступ к следующему JSON и создать флажки на основе количества книг в каждом массиве «options» в «содержимом».Если я получаю доступ "ctrl.content = result.data.bookHistory.contents [0] .options;"это чтение опций массива содержимого [0], и флажки созданы успешно. В моем случае два флажка были созданы для двух книг Predator и Alien.Но когда я пытаюсь "ctrl.content = result.data.bookHistory.contents [1] .options.action;"флажки не создаются, и ctrl.content показывает неопределенное в "console.log (ctrl.content);",Я попытался открыть "ctrl.content = result.data.bookHistory.contents [1] .options;"также.Неудачно.Любая помощь будет высоко ценится.

JSON

{
"bookhistory" : {
    "contents" : [
             {
              "options" : [
                {
                        "title" : "Predator",
                        "type" : "CHECKBOX"
                },
                {
                        "title" : "Alien",
                        "type" : "CHECKBOX"
                }]
             },
             {
              "options" : [
                {
                   "action" : 
                     {
                         "title" : "batman",
                         "type" : "CHECKBOX"
                     }
                }]
             }]
          }
       }

1 Ответ

0 голосов
/ 18 ноября 2018

options - это массив, который вы не можете напрямую вызвать options.action, вам нужно вызвать options [0] .action, тогда он даст вам объект действия, имеющий заголовок и тип.

Пожалуйста, посмотритекод ниже.

var res = {
"bookhistory" : {
    "contents" : [
             {
              "options" : [
                {
                        "title" : "Predator",
                        "type" : "CHECKBOX"
                },
                {
                        "title" : "Alien",
                        "type" : "CHECKBOX"
                }]
             },
             {
              "options" : [
                {
                   "action" : 
                     {
                         "title" : "batman",
                         "type" : "CHECKBOX"
                     }
                }]
             }]
          }
       }
       
       
  console.log("direclty calling =>",res.bookhistory.contents[1].options[0].action)
  
  // you can use the forEach method, you can check the data basically contents is an array and for the first item options doesn't have action but the second item in the contents have action for the options array. 
  
// inorder to print you can use a if conditon as shown below 

console.log("using loops")

res.bookhistory.contents.forEach(o => {
 o.options.forEach(so => {
  if(so.action){
    console.log(so.action)
  }else{
    console.log(so)
  } 
 })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...