Javascript сортировать массив по двум полям - PullRequest
59 голосов
/ 25 мая 2011
grouperArray.sort(function (a, b) {
    var aSize = a.gsize;
    var bSize = b.gsize;
    var aLow = a.glow;
    var bLow = b.glow;
    console.log(aLow + " | " + bLow);      
    return (aSize < bSize) ? -1 : (aSize > bSize) ? 1 : 0;
});

Таким образом, приведенный выше код сортирует массив по gsize - от наименьшего к наибольшему.Работает хорошо.Но если размер gsize тот же, я бы хотел, чтобы он сортировал по свету.

Спасибо.

Ответы [ 13 ]

0 голосов
/ 01 июля 2013

Это то, что я использую

function sort(a, b) {
    var _a = "".concat(a.size, a.glow);
    var _b = "".concat(b.size, b.glow);
    return _a < _b;
}

объединяет два элемента в строку, и они будут отсортированы по строковому значению. Если вы хотите, вы можете заключить _a и _b в parseInt, чтобы сравнить их как числа, если знаете, что они будут числовыми.

0 голосов
/ 25 мая 2011
grouperArray.sort(
  function(a,b){return a.gsize == b.gsize ? a.glow - b.glow : a.gsize - b.gsize}
);
0 голосов
/ 25 мая 2011
grouperArray.sort(function (a, b) {
    var aSize = a.gsize;
    var bSize = b.gsize;
    if (aSize !== aSize)
        return aSize - bSize;
    return a.glow - b.glow;
});

не проверено, но я думаю, что должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...