简体   繁体   English

循环遍历数组并显示以下格式

[英]Loop over the array and display the following format

My goal is to loop over some data and get something like the following output, so if anyone can help me out it would be greatly appreciated.我的目标是遍历一些数据并获得类似于以下 output 的内容,因此,如果有人可以帮助我,将不胜感激。 In order to display something like this, I tried looping something and displaying it in a loop.为了显示这样的东西,我尝试循环一些东西并在循环中显示它。

 let selectedOrders: {code?: string;selectedList?: [{ name: string; language: string }];
  let set = new Set();

      order.orders.map((list) => {

            if (!set.has(list.code)) {
                selectedOrders.push({
                  code: list.code,
                  selectedList: [
                    {
                      name: list.name!,
                      language: list.language!,
        
                    },
                  ],
                });
                set.add(list.serviceCode);
                return;
            }
            selectedOrders.push({
              selectedList: [
                {
                
                      name: list.name!,
                      language: list.language!,
        
                
                },
              ],
            });
        }
      });
 

  return selectedOrders;
});

Input输入

{
    code:"A"
    name:"php"
    desc:"language"
    order:2
    },
    {
    code:"A"
    name:"javascript"
    desc:"language"
    order:1
    
    },

Output Output

code: A 
   selectedList: [{
    name:"javascript"
   desc:"language"
    },
    {
    name:"php"
   desc:"language"
    }]
}
let data = [
      {
        code: "A",
        name: "php",
        desc: "language",
        order: 2,
      },
      {
        code: "B",
        name: "c++",
        desc: "language",
        order: 3,
      },
      {
        code: "A",
        name: "javascript",
        desc: "language",
        order: 1
      }];

    let result = data.reduce((acc: any[], item) => {
      const { name, desc, order, code } = item;
      if (acc.some((a: any) => code == a.code)) {
        let obj: any = acc.find((a: any) => code == a.code)!;
        obj.selectedList.push({
          name, desc, order
        });
      } else {
        acc.push({
          code,
          selectedList: [{ name, desc, order }]
        });
      }
      return acc;
    }, []);
    console.log(result);

Just change any to your required type.只需将任何更改为您所需的类型。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM