2015-06-08 38 views
2

我想应用组和排序对象。组和排序对象与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.] 
    } 

分组的阵列内的每个对象都有属性,包括办公室,我不能让我需要通过它的数据进行排序的结果,所以我们有一个升序排列。

我试过下面的方法,但似乎没有工作。

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

任何人都知道这个解决方案吗?

回答

6

为什么不分类然后分组?然后,结果将按公司名称分组,每个对象都有排序的对象数组(按办公室名称排列)

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

这是一个很好且快速的方法!感谢萨米 – habibg