【发布时间】:2011-11-01 17:21:57
【问题描述】:
我有一个如下形式的对象数组:
arr[0] = { 'item1' : 1234, 'item2' : 'a string' };
我首先按'item1' 对其进行排序,这很简单。现在我想再次对arr(按'item1' 排序)排序,但这次按'item2',但仅针对'item1' 相同的元素。最终的数组如下所示:
arr = [
{ 'item1' : 1234, 'item2' : 'apple' },
{ 'item1' : 1234, 'item2' : 'banana' },
{ 'item1' : 1234, 'item2' : 'custard' },
{ 'item1' : 2156, 'item2' : 'melon' },
{ 'item1' : 4345, 'item2' : 'asparagus' }
];
我尝试为第二种情况编写一个排序函数,如下所示:
arr.sort(function(a,b){
if(a.item1 === b.item1){
return a.item2 > b.item2 ? 1 : a.item2 < b.item2 : -1 : 0;
}
});
我可以将这两种排序组合在一个函数中以获得最终排序的数组,但在某些情况下,我必须仅按 'item1' 或仅按 'item2' 进行排序。
【问题讨论】:
-
如果您设法按 item1、item2 和这两个排序,那么您到底在问什么?
-
所以这就像写一个装饰器模式,我说“new sortByItem2(new sortByItem1(arr))”。我也想像 sortByItem1(arr) 或 sortByItem2(arr) 或 "new sortByItem1(new sortByItem2(arr))" 那样使用它
标签: javascript arrays sorting