更改_.groupBy()结果数据的顺序

大家好,这是我的数组结构


let data = [

    {"name": "ragupathi", "siteID": 10},

    {"name": "abi","siteID": 13},

    {"name": "mahesh", "siteID": 12},

]

我想要基于siteID的组数据,所以我正在使用groupBy siteID


让sample = _.groupBy(data,'siteID');


当前输出是:


{

  "10": [

    {

      "name": "ragupathi",

      "siteID": 10

    }


  ],

  "12": [

    {

      "name": "mahesh",

      "siteID": 12

    }

  ],

  "13": [

    {

      "name": "abi",

      "siteID": 13

    }

  ]

}

但我期望按ASC顺序输出名称


{

  "13": [

    {

      "name": "abi",

      "siteID": 13

    }

  ],

  "10": [

    {

      "name": "mahesh",

      "siteID": 12

    }

  ],

  "12": [

   {

      "name": "ragupathi",

      "siteID": 10

    }

   ],

}

通过SiteID分组

根据对象名称的属性对输出进行分组


紫衣仙女
浏览 214回答 2
2回答

长风秋雁

由于不能保证道具的顺序,因此您必须利用Map或其他方法来获得所需的排序和输出。您可以像这样使用Array.sort,Array.forEach和Map:let data = [{"name": "ragupathi", "siteID": 10},{"name": "abi", "siteID": 13},{"name": "abi","siteID": 13},{"name": "mahesh", "siteID": 12},{"name": "abi", "siteID": 13},{"name": "abi", "siteID": 13},{"name": "ragupathi", "siteID": 10}], map = new Map()data  .sort((a,b) => b.siteID - a.siteID)  .forEach(x => map.set(x.siteID, [...(map.get(x.siteID) || []), x] || [x]))console.log(map) // The map object output in your browser consoleconsole.log(Array.from(map.values())) // The siteIds in array form    将它们放在map对象中后,您可以通过siteIDlike轻松访问组map.get(13),您将获得siteID为13的分组项的数组。您还可以始终通过Map.keys()方法获取将密钥存储在地图中的顺序。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript