Пользовательская функция компаратора сортировки Javascript - сортировка отсортированного массива

У меня есть массив объектов следующей формы:

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' .

25
задан fenderplayer 23 August 2011 в 07:27
поделиться