javascript - 使用 Underscore.js 对对象进行分组和排序

标签 javascript underscore.js

我正在尝试对对象应用分组和排序。

var emplData = [{
    "company": "companyA",
    "title": "positionA",
    "office": "Boston",
    "first-name": "Mike",
    "last-name": "Bloom",
    "profile-url": "url"
}, {
    "company": "companyA",
    "title": "positionD",
    "office": "Amsterdam",
    "first-name": "Adam",
    "last-name": "Smart",
    "profile-url": "url"
}, {
    "company": "companyB",
    "title": "positionB",
    "office": "Toronto",
    "first-name": "Tina",
    "last-name": "Carmichael",
    "profile-url": "url"
}, {
    "company": "companyB",
    "title": "positionA",
    "office": "Chicago",
    "first-name": "Seth",
    "last-name": "Big",
    "profile-url": "url"
}, {
    "company": "companyC",
    "title": "positionC",
    "office": "St. Louis",
    "first-name": "Carla",
    "last-name": "Elsas",
    "profile-url": "url"
}]

我喜欢按company 对数据进行分组,然后按办公室排序(升序)。我正在使用 underscore.js分组,它返回类似于下面的对象。

var grpData = _.groupBy(emplData, 'company');

  {
    CompanyA:[{object1}, {object2} etc.],
    CompanyB: [{object1}, {object2} etc.],
    CompanyC: [{object1}, {object2} etc.]
  }

现在分组数组中的每个对象都具有包括 office 在内的属性,我无法获得我需要的结果来对数据进行排序,所以我们有一个升序。

我试过下面的方法,但似乎不起作用。

var srtData = _.sortBy(grpData , function (i) {
    $(i).each(function (i2, val) {
        return val.office;
    });
});

有人知道这个的解决方案吗?

最佳答案

为什么不先排序再分组呢?然后结果将是一个按公司名称分组的集合,每个对象都包含已排序的对象数组(按办公室名称升序)

var grpData = _.groupBy(_.sortBy(emplData, "office"), 'company');

关于javascript - 使用 Underscore.js 对对象进行分组和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30716166/

相关文章:

javascript - 如何在 droppable 和 sortable 之间拖放元素(两种方式)?

javascript - Hapi.js -- 设置 X-Authorization header

javascript - Underscore.js 基于属性名称数组的唯一选择

javascript - 通过带下划线的属性值过滤重复的集合对象(不区分大小写和 trim )

javascript - 来自 json 对象的 d3.js 图表

javascript - 使用下划线减少连接?

javascript - 打印 Google 图表以占据整页

javascript - 从 Google Chart 中的 DataView 类获取值到 JavaScript 数组

javascript - Lodash/underscore 函数使用给定长度的默认空值初始化数组

javascript - 带有图像图标的 Bootstrap