2015-10-16 61 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; 
    });