【问题标题】:Make a function in javaScript which will take following data as input and expected output data will be as follows: [duplicate]在javaScript中创建一个函数,它将以下数据作为输入,预期的输出数据如下:[重复]
【发布时间】:2022-11-10 15:47:08
【问题描述】:

输入数据

const inputData = [
  {
    id: 1,
    name: "Fruit",
  },
  {
    id: 2,
    name: "Apple",
    parent: 1,
  },
  {
    id: 3,
    name: "Orange",
    parent: 1,
  },
  {
    id: 4,
    name: "Banana",
    parent: 1,
  },
  {
    id: 5,
    name: "Berry",
    parent: 1,
  },
  {
    id: 6,
    name: "Drink",
  },
  {
    id: 7,
    name: "Water",
    parent: 6,
  },
  {
    id: 8,
    name: "Lemonade",
    parent: 6,
  },
  {
    id: 9,
    name: "Tea",
    parent: 6,
  },
  {
    id: 10,
    name: "Soup",
  },
];

**预期输出:**

const outputData = [
  {
    id: 1,
    name: "Fruit",
    children: [
      {
        id: 2,
        name: "Apple",
        parent: 1,
      },
      {
        id: 3,
        name: "Orange",
        parent: 1,
      },
      {
        id: 4,
        name: "Banana",
        parent: 1,
      },
      {
        id: 5,
        name: "Berry",
        parent: 1,
      },
    ],
  },
  {
    id: 6,
    name: "Drink",
    children: [
      {
        id: 7,
        name: "Water",
        parent: 6,
      },
      {
        id: 8,
        name: "Lemonade",
        parent: 6,
      },
      {
        id: 9,
        name: "Tea",
        parent: 6,
      },
    ],
  },
  {
    id: 10,
    name: "Soup",
    children: [],
  },
]

【问题讨论】:

    标签: javascript arrays object


    【解决方案1】:

    尝试过滤和映射

    const inputData = [
      {
        id: 1,
        name: "Fruit",
      },
      {
        id: 2,
        name: "Apple",
        parent: 1,
      },
      {
        id: 3,
        name: "Orange",
        parent: 1,
      },
      {
        id: 4,
        name: "Banana",
        parent: 1,
      },
      {
        id: 5,
        name: "Berry",
        parent: 1,
      },
      {
        id: 6,
        name: "Drink",
      },
      {
        id: 7,
        name: "Water",
        parent: 6,
      },
      {
        id: 8,
        name: "Lemonade",
        parent: 6,
      },
      {
        id: 9,
        name: "Tea",
        parent: 6,
      },
      {
        id: 10,
        name: "Soup",
      },
    ];
    
    var newData=inputData.filter(i=> !i.parent).map(i=>{
    let children=inputData.filter(c=> c.parent == i.id);
    return {...i,children}
    });
    
    console.log(newData)

    【讨论】:

      猜你喜欢
      • 2014-03-03
      • 2021-03-23
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2022-06-29
      相关资源
      最近更新 更多