首页 > 解决方案 > 使用 _.groupBy 对对象进行反向排序

问题描述

所以我有一个对象数组,并且我在_.groupBy特定情况下使用 underscore.js 函数。如何_.groupBy通过按键获得排序反向的输出?

我有这个 - -

stooges = [
  {name: 'moe', age: 40}, 
  {name: 'larry', age: 50}, 
  {name: 'curly', age: 60}, 
  {name: 'moe', age: 40}, 
  {name: 'larry', age: 50}, 
  {name: 'curly', age: 60}
]

groupBy 给了我这个---

_.groupBy(stooges, 'age');
=> {
  "40": [{name: 'moe', age: 40}, {name: 'moe', age: 40}],
  "50": [{name: 'larry', age: 50}, {name: 'larry', age: 50}],
  "60": [{name: 'curly', age: 60}, {name: 'curly', age: 60}]
 }

我希望 groupBy 给我这个 ---

=> {
      "60": [{name: 'curly', age: 60}, {name: 'curly', age: 60}]
      "50": [{name: 'larry', age: 50}, {name: 'larry', age: 50}],
      "40": [{name: 'moe', age: 40}, {name: 'moe', age: 40}],

   }

标签: javascriptunderscore.js

解决方案


对象中的键没有明确定义的顺序 - 顺序可能会从执行更改为执行,或者从一个 JavaScript 引擎更改为另一个。(它可能不会,但如果你的代码依赖它,它可能随时中断。)

如果要按特定顺序枚举它们,请使用_.keys获取结果对象中的键数组,对该数组进行排序并枚举数组,从结果对象中获取相应的组。


推荐阅读