使用 Underscore.js 对对象进行分组和排序
Group and Sort object with 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 进行分组,它 returns 类似于下面的对象。
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');
我正在尝试对对象应用分组和排序。
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 进行分组,它 returns 类似于下面的对象。
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');