Группа Json массив javascript - PullRequest
       7

Группа Json массив javascript

0 голосов
/ 08 марта 2020

Это довольно простой вопрос, я получил Json вот так:

const test = [
  {
    label: "Group 1",
    options: [
      { label: "option 1", value: "value_1" },
      { label: "option 2", value: "value_2" }
    ]
  },
  {
    label: "Group 1",
    opions: [
      { label: "option 3", value: "value_3" },
      { label: "option 4", value: "value_4" }
    ]
  },
  {
    label: "Group 2",
    options: [
      { label: "option 5", value: "value_5" },
      { label: "option 6", value: "value_6" }
    ]
  },
  {
    label: "Group 3",
    options: [
      { label: "option 7", value: "value_7" },
      { label: "option 8", value: "value_8" }
    ]
  },
  {
    label: "Group 3",
    options: [
      { label: "option 9", value: "value_9" },
      { label: "option 10", value: "value_10" }
    ]
  },
];

И я хочу сгруппировать их вот так (по метке группы - формат точно такой, как описано ниже, я не могу добавить какие-либо другие значения, так как я буду использовать его в компонентеact-select как опции)

const test = [
  {
    label: "Group 1",
    options: [
      { label: "option 1", value: "value_1" },
      { label: "option 2", value: "value_2" },
      { label: "option 3", value: "value_3" },
      { label: "option 4", value: "value_4" }
    ]
  },
  {
    label: "Group 2",
    options: [
      { label: "option 5", value: "value_5" },
      { label: "option 6", value: "value_6" }
    ]
  },
  {
    label: "Group 3",
    options: [
      { label: "option 7", value: "value_7" },
      { label: "option 8", value: "value_8" },
      { label: "option 9", value: "value_9" },
      { label: "option 10", value: "value_10" }
    ]
  },
];

Как мне этого добиться?

Заранее спасибо

1 Ответ

1 голос
/ 08 марта 2020

Пожалуйста, найдите решение ниже для вашего решения проблемы.

const test = [{
    label: "Group 1",
    options: [{
        label: "option 1",
        value: "value_1"
      },
      {
        label: "option 2",
        value: "value_2"
      }
    ]
  },
  {
    label: "Group 1",
    opions: [{
        label: "option 3",
        value: "value_3"
      },
      {
        label: "option 4",
        value: "value_4"
      }
    ]
  },
  {
    label: "Group 2",
    options: [{
        label: "option 5",
        value: "value_5"
      },
      {
        label: "option 6",
        value: "value_6"
      }
    ]
  },
  {
    label: "Group 3",
    options: [{
        label: "option 7",
        value: "value_7"
      },
      {
        label: "option 8",
        value: "value_8"
      }
    ]
  },
  {
    label: "Group 3",
    options: [{
        label: "option 9",
        value: "value_9"
      },
      {
        label: "option 10",
        value: "value_10"
      }
    ]
  },
];

let temp = {};
test.forEach(t => {
  const key = t.label;
  if (temp[key]) {
    const tempArray = temp[key].options.concat(t.options);
    temp[key].options = tempArray;
  } else {
    temp[key] = {
      label: key,
      options: t.options
    }
  }
});

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