group array of objects by id

后端 未结 8 616
抹茶落季
抹茶落季 2021-01-16 08:07

I am trying to loop through a array ob objects and group the items of the array into new arrays that have matching id:

API example:

    api_array [
          


        
8条回答
  •  没有蜡笔的小新
    2021-01-16 08:23

    Try to acheive like this:

     
    
      var api_array = [
           {id: 1, postcode: 'xxx', street: 'xxx', city: 'xxx'},
           {id: 1, postcode: 'xxx', street: 'xxx', city: 'xxx'},
           {id: 1, postcode: 'xxx', street: 'xxx', city: 'xxx'},
           {id: 2, postcode: 'xxx', street: 'xxx', city: 'xxx'},
           {id: 2, postcode: 'xxx', street: 'xxx', city: 'xxx'},
           {id: 2, postcode: 'xxx', street: 'xxx', city: 'xxx'},
           {id: 3, postcode: 'xxx', street: 'xxx', city: 'xxx'},
           {id: 3, postcode: 'xxx', street: 'xxx', city: 'xxx'},
           {id: 3, postcode: 'xxx', street: 'xxx', city: 'xxx'},
           {id: 4, postcode: 'xxx', street: 'xxx', city: 'xxx'},
           {id: 4, postcode: 'xxx', street: 'xxx', city: 'xxx'},
           {id: 4, postcode: 'xxx', street: 'xxx', city: 'xxx'},
       ];
       
      const result = api_array.reduce((acc, item) => {
        acc[`group_${item.id}`] = (acc[`group_${item.id}`] || []);
        acc[`group_${item.id}`].push(item);
        return acc;
      }, {});
    
    console.log(result);

    Note: The result will have keys group_1, group_2 ... instead group_one, group_two ...

    If you strictly need that, then make an array for key and values to convert 1 as one.

提交回复
热议问题