2013-07-31 34 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似乎编辑了这个问题) –