2013-07-31 77 views
0

下面是我想要排序的數組的示例。排序在javascript

[ { nums: 'http://s3.amazonaws.com/1375304393109.png', 
     variant: { name: 'original' } }, 
     { nums: 'http://s3.amazonaws.com/2315456487896.jpg', 
     variant: { name: 'original' } }, 
     { nums: 'http://s3.amazonaws.com/1375304393109.png', 
     variant: { name: 'r256x200', size: '256x200' } }, 
     { nums: 'http://s3.amazonaws.com/1375304393091.jpg', 
     variant: { name: 'r256x200', size: '256x200' } }, 
     { nums: 'http://s3.amazonaws.com/2315456487896.jpg', 
     variant: { name: 'r512x400', size: '512x400' } }, 
     { nums: 'http://s3.amazonaws.com/1375304393091.jpg', 
     variant: { name: 'r512x400', size: '512x400' } } ] 

我想根據nums(string)鍵對數組進行排序。我想對數組進行排序的方法很簡單:讓相同的數字羣彼此相鄰,即

[ { nums: 'http://s3.amazonaws.com/1375304393109.png', 
     variant: { name: 'original' } }, 
     { nums: 'http://s3.amazonaws.com/1375304393109.png', 
     variant: { name: 'r256x200', size: '256x200' } }, 
     { nums: 'http://s3.amazonaws.com/2315456487896.jpg', 
     variant: { name: 'original' } }, 
     { nums: 'http://s3.amazonaws.com/2315456487896.jpg', 
     variant: { name: 'r512x400', size: '512x400' } }, 
     { nums: 'http://s3.amazonaws.com/1375304393091.jpg', 
     variant: { name: 'r256x200', size: '256x200' } }, 
     { nums: 'http://s3.amazonaws.com/1375304393091.jpg', 
     variant: { name: 'r512x400', size: '512x400' } } ] 

它不必是任何順序,只要同一號碼組了。這樣做的最快方法是什麼?

抱歉有關混淆。我想這是原始問題的稍微複雜的版本。任何人有好主意?

+0

您是否閱讀過此堆棧溢出頁面右列中的「相關」鏈接?我懷疑他們中的一個會有所幫助。 –

+1

.sort(function(a,b){return a.nums-b.nums}); – dandavis

回答

0

的比較數字:

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

比較字符串(你的情況):

array.sort(function(a,b) { return a.nums.localeCompare(b.nums) }) 
+0

很高興你進行了編輯。 – CBIII

+0

爲什麼 - 而不是<? – phiresky

+2

用於排序的函數必須返回一個數字,以防返回的值爲負值,a在b之前。如果在a之前爲正b,並且如果它爲0,那麼只要該函數或訂單涉及它們就是等於 – mitomed

0

您需要的對象的數組映射到字符串數組,你需要排序的字符串:

array.map(function(o) {return o.nums;}).sort() 

這是你可以得到你所提供的樣本輸出最接近:

["1375304393091", "1375304393091", "1375304393109", "1375304393109", "2315456487896", "2315456487896"] 
+0

這種排序屬性值,但不是對象。 (OP似乎編輯了這個問題) –