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