Как отсортировать массив по нескольким значениям?

Здравствуйте! Есть простой код на JS:

vals = vals.sort(
   function(a, b) {return a[1] - b[1]}
);


Он сортирует двухмерный массив по его второму значению. Но есть один минус: если в массиве несколько одинаковых значений, которые идут подряд друг за другом, например [12,13,1,1,1], они пропускаются функцией, и их необходимо сортировать по другому значению, т.е. по a[0]. Однако я совершенно не представляю, каким образом при помощи sort() можно реализовать такое, и можно ли вообще?.. Заранее благодарен за любую помощь, спасибо.
  • Вопрос задан
  • 3846 просмотров
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
vals = vals.sort(
   function(a, b) {
     if (a[1] == b[1]) {
       return a[0] - b[0];
     } else return a[1] - b[1];
   }
);

Можно упростить, и написать в одну строку:
vals = vals.sort(
   function(a, b) { return a[1] == b[1] ? a[0] - b[0] : a[1] - b[1]; }
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы