[英]Group and Sort object with Underscore.js
I'm trying to apply group and sort on objects. 我正在尝试对对象进行分组和排序。
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"
}]
I like to group the data by company
and then sort by office (ascending order). 我喜欢按
company
对数据分组,然后按办公室排序(升序)。 I'm using underscore.js to group and it returns similar to object below. 我正在使用underscore.js进行分组,并且返回类似于下面的对象。
var grpData = _.groupBy(emplData, 'company');
{
CompanyA:[{object1}, {object2} etc.],
CompanyB: [{object1}, {object2} etc.],
CompanyC: [{object1}, {object2} etc.]
}
Now each object inside the grouped array has properties including office, I can't get the results I need to sort the data by it so we have an ascending order. 现在,分组数组中的每个对象都具有包括office在内的属性,我无法获得按其对数据进行排序所需的结果,因此我们具有升序。
I have tried below method but doesn't seem to work. 我尝试了下面的方法,但似乎没有用。
var srtData = _.sortBy(grpData , function (i) {
$(i).each(function (i2, val) {
return val.office;
});
});
Anyone know a solution for this? 有人知道解决方案吗?
Why not sort and then group? 为什么不排序然后分组? Then the result will be a collection grouped by company name each holding sorted array of objects (asc. by office name)
然后,结果将是一个按公司名称分组的集合,每个集合都包含排序的对象数组(按办公室名称的升序)
var grpData = _.groupBy(_.sortBy(emplData, "office"), 'company');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.