首页 > 解决方案 > 组 Json 数组 javascript

问题描述

这是一个很简单的问题,我得到了一个这样的 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" }
    ]
  },
];

我想像这样对它们进行分组(通过 Group 标签 - 格式完全如下所述,我不能添加任何其他值,因为我将在 react-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" }
    ]
  },
];

我怎样才能做到这一点?

提前致谢

标签: javascriptjsonsortinggrouping

解决方案


请在下面为您的问题陈述找到解决方案。

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));


推荐阅读