Как разобрать эти JSON данных, пропуская три основных узла? - PullRequest
0 голосов
/ 06 августа 2020

Мне нужно написать JavaScript для анализа этого JSON, я не могу найти способ пропустить первые 3 узла и получить доступ к данным в итерации:

[
   {
      "Table":[
         {
            "id":1,
            "DESC":"Sports",
            "ORDER":1,
            "AVAILABLE":true
         },
         {
            "id":2,
            "DESC":"Math",
            "ORDER":2,
            "AVAILABLE":true
         },
         {
            "id":3,
            "DESC":"English",
            "ORDER":3,
            "AVAILABLE":true
         }
      ]
   }
]

Я уже пробовал что-то вроде этого data[0].[0].[0] или data[0].firstChild, но это не сработало.

1 Ответ

0 голосов
/ 06 августа 2020

Я бы сделал что-то вроде этого, я напишу общую c функцию для получения первого дочернего элемента, если это массив или объект:

function getFirstChild(o) {
  if (o instanceof Array) {
    return o[0];
  } else {
    return o[Object.keys(o)[0]];
  }
}

В зависимости от типа, это будет отправьте мне первый элемент массива или значение первого ключевого элемента объекта.

Затем я сделаю трижды то, что вы хотите:

// first level
var myData = getFirstChild(data);
// second level
myData = getFirstChild(myData);
// third level
myData = getFirstChild(myData);

И затем использую myData, который имеет правильное значение. Это всего лишь мое предположение о том, чего вы хотели. Есть много возможностей для улучшения.

Полный фрагмент

function getFirstChild(o) {
  if (o instanceof Array) {
    return o[0];
  } else {
    return o[Object.keys(o)[0]];
  }
}

var data = [
   {
      "Table":[
         {
            "id":1,
            "DESC":"Sports",
            "ORDER":1,
            "AVAILABLE":true
         },
         {
            "id":2,
            "DESC":"Math",
            "ORDER":2,
            "AVAILABLE":true
         },
         {
            "id":3,
            "DESC":"English",
            "ORDER":3,
            "AVAILABLE":true
         }
      ]
   }
];

// first level
var myData = getFirstChild(data);
// second level
myData = getFirstChild(myData);
// third level
myData = getFirstChild(myData);

console.log(myData);

Или, если я понимаю, вам нужен массив до l oop через. Просто сделай дважды:

function getFirstChild(o) {
  if (o instanceof Array) {
    return o[0];
  } else {
    return o[Object.keys(o)[0]];
  }
}

var data = [
   {
      "Table":[
         {
            "id":1,
            "DESC":"Sports",
            "ORDER":1,
            "AVAILABLE":true
         },
         {
            "id":2,
            "DESC":"Math",
            "ORDER":2,
            "AVAILABLE":true
         },
         {
            "id":3,
            "DESC":"English",
            "ORDER":3,
            "AVAILABLE":true
         }
      ]
   }
];

// first level
var myData = getFirstChild(data);
// second level
myData = getFirstChild(myData);

console.log(myData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...