And*_*dré 5 javascript underscore.js
我有以下演示数据。
var demoData= [{"EntryGroupDate":"November 2013",
"DisplayName": "Hans Meier (November)",
"EntryGroupDateSort": 11},
{"EntryGroupDate":"August 2013",
"DisplayName": "Franz Mueller (August)",
"EntryGroupDateSort": 8},
{"EntryGroupDate":"November 2013",
"DisplayName": "Franz Huber (November)",
"EntryGroupDateSort": 11},
{"EntryGroupDate":"Juli 2013",
"DisplayName": "Franz Schmidt (Juli)",
"EntryGroupDateSort": 7}
];
Run Code Online (Sandbox Code Playgroud)
EntryGroupDateSort首先按相同标准对它们进行分组,然后再按相同标准对它们进行排序的最佳方法是什么?对于输出,我需要原始数组的所有信息。
我刚刚摆弄了 UnderscoreJS,但使用以下代码没有得到所需的结果。
var myPersons = demoData;
var groups = _.groupBy(myPersons, "EntryGroupDate");
console.log(groups);
groups = _(groups).sortBy(function (item) {
return item.EntryGroupDateSort;
});
console.log(groups);
Run Code Online (Sandbox Code Playgroud)
第一个控制台输出以我在对数据进行排序后想要的格式显示数据。
希望有人能指出我正确的方向。
您可以先对整个数组进行排序,然后进行分组:
var demoData= [{"EntryGroupDate":"November 2013",
"DisplayName": "Hans Meier (November)",
"EntryGroupDateSort": 11},
{"EntryGroupDate":"August 2013",
"DisplayName": "Franz Mueller (August)",
"EntryGroupDateSort": 8},
{"EntryGroupDate":"November 2013",
"DisplayName": "Franz Huber (November)",
"EntryGroupDateSort": 11},
{"EntryGroupDate":"Juli 2013",
"DisplayName": "Franz Schmidt (Juli)",
"EntryGroupDateSort": 7}
];
_.sortBy( demoData, function(x){ return x.EntryGroupDateSort; } );
groups = _.groupBy( demoData, 'EntryGroupDate' );
console.log( groups );
Run Code Online (Sandbox Code Playgroud)
如果你想在分组后排序,那么你可以使用(此时排序DisplayName):
groups = _.groupBy( demoData, 'EntryGroupDate' );
for ( var key in groups )
groups[key].sort( function(a,b){ var x = a.DisplayName, y = b.DisplayName; return x === y ? 0 : x < y ? -1 : 1; } );
console.log( groups );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19792 次 |
| 最近记录: |