2013-01-21 31 views
0

我有一個問題,將理想地由RDBMS處理,但我需要它在Javascript中。我打算使用谷歌齒輪,但是我發現它已經不在發展中了。Javascript:多值排序

我可以實現以下哪些方法?

我有很多產品作爲JSON對象。每個屬性都有3個我想排序的屬性,我希望能夠更改在其他屬性之前排序的屬性。在SQL中,我可能寫了order by weight, height, power或其他組合。

該解決方案功能越強越好,因爲我可能想要擴展需求,所有這些都可以通過RDBMS更容易處理,但是我只想知道客戶端選項,因爲我會回退到使用如果絕對必要的話,可以使用服務器端的RDBMS。

感謝

編輯:試想想它,它實際上可能是很簡單只是爲了請使用Array.sort(sortFn)...

+0

我想看看下載的「數據表」的jQuery – Adam

+0

這個職位有類似的問題,答案可以幫助你:http://stackoverflow.com/questions/14245016/sort-by -multiple-dimensions-in-crossfilter -js/14245829#14245829 –

+0

我的第一個想法是nodejs。 – hd1

回答

1

感謝亞當,和大家,我會記得那些?當我的需求發展時。總之,這裏是我想出了......解決

function compare(a, b){ 
    var weight = a.weight - b.weight; 
    var power = a.power - b.power; 
    var height = a.height - b.height; 

    if (weight) return weight; 
    if (power) return power; 
    if (height) return height; 
    return 0; 
}; 
objArr.sort(compare); 

再次感謝

0

的Javascript多標準/多參數排序

最簡單的方法來執行一個javascript多標準排序是連接標準並將它們比較爲2個字符串。

function sortByCriteria(data, criteria) { 
    return data.sort(function (a, b) { 

     var i, iLen, aChain, bChain; 

     i = 0; 
     iLen = criteria.length; 
     for (i; i < iLen; i++) {   
      aChain += a[criteria[i]]; 
      bChain += b[criteria[i]]; 
     } 

     return aChain.localeCompare(bChain); 
    }); 
} 

http://jsfiddle.net/oahxg4u3/6/