简体   繁体   中英

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. 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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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