2015-10-16 5 views
-1

У меня есть следующий массив:Сортировка массива в два раза

var array = [{ 
    "name": "Item 1", 
    "LineNumber": "10", 
    "size": "5" 
    }, 
    { 
    "name": "Item 2", 
    "LineNumber": "30", 
    "size": "5" 
    }, 
    { 
    "name": "Item 3", 
    "LineNumber": "30", 
    "size": "4" 
    }, 
    { 
    "name": "Item 4", 
    "LineNumber": "20", 
    "size": "5" 
    }] 

с использованием следующих, я могу сортировать по номеру строки:

 array.sort(function(a, b) { 
     return a.LineNumber - b.LineNumber; 
     }); 

В некоторых ситуациях с большими данными, я бегу в проблема, когда элементы будут иметь один и тот же номер строки, но их размер будет отличаться (т. е. пункт 2 и пункт 3). Я хотел бы сначала отсортировать по номеру строки, а затем упорядочить по размеру в зависимости от того, как возвращается первая сортировка. Можно ли добиться этого в одной функции сравнения вида?

+1

Проведите первое сравнение, если они равны с возвращением ко второму сравнительному тесту и возвращают это. – MinusFour

ответ

7

Попробуйте это:

array.sort(function(a, b) { 
    if (a.LineNumber == b.LineNumber) 
    return a.size - b.size; 
    return a.LineNumber - b.LineNumber; 
}); 
0

Вам просто нужно добавить больше логики в вашей функции сортировки.

array.sort(function(a, b) { 
    if (a.LineNumber === b.LineNumber) { 
     return a.size - b.size; 
    } 
    return a.LineNumber - b.LineNumber; 
    }); 
Смежные вопросы