Javascript анализирует данные JSON в несколько переменных, сохраняя отдельные записи в памяти - PullRequest
1 голос
/ 26 сентября 2019

Я использовал JSON stringify, JSON Parse и т. Д ..., но у меня возникли проблемы с поиском / выяснением того, как разделить мой результат JSON на несколько переменных.

Проблема: у меня есть JSONрезультат от 2 до многих результатов (разделы, страницы и т. д.). Цель: сохранить каждый результат / строку в своей собственной переменной.

Пример полного разбора JSON-результата:

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "text",
     "name": "question1"
    }
   ]
  },
  {
   "name": "page2",
   "elements": [
    {
     "type": "checkbox",
     "name": "question2",
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    }
   ]
  }
 ]
}

В этом примере обратите внимание на то, что "name": "page1" и page2 являются чистыми разделителями, я мог бы в итоге заставить их вызывать SectionA, SectionB и т. Д., Но это не должно быть важно.

  1. Мне нужночтобы хранить их отдельно
  2. Мне также нужно сохранить эту полную структуру JSON

пример того, что я хочу с ней сделать

var page1 =
{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "text",
     "name": "question1"
    }
   ]
  }
 ]
}

2-й вариант:

var page2 =
{
 "pages": [
  {
   "name": "page2",
   "elements": [
    {
     "type": "checkbox",
     "name": "question2",
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    }
   ]
  }
 ]
}

Обратите внимание, что он не только разбит на части, но и основная часть, которую я хочу сохранить в переменной "pages: [

1 Ответ

3 голосов
/ 26 сентября 2019

Это может сделать просто простая операция map().

После этого вы можете использовать деструктуризацию массива для захвата вашего результата в отдельные переменные:

const data = {
  "pages": [{
      "name": "page1",
      "elements": [{
        "type": "text",
        "name": "question1"
      }]
    },
    {
      "name": "page2",
      "elements": [{
        "type": "checkbox",
        "name": "question2",
        "choices": [
          "item1",
          "item2",
          "item3"
        ]
      }]
    }
  ]
};

const split = data.pages.map(p => ({pages: [p]}));

console.log(split);

const [page1, page2] = split;

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