0

这是我要排序的数组的示例。

    [ { 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' } } ]

它不必按任何顺序排列,只要相同的数字分组即可。最快的方法是什么?

很抱歉造成混乱。我想这是原始问题的稍微复杂的版本。有人有好主意吗?

4

2 回答 2

0

比较数字:

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

用于比较字符串(您的情况):

 array.sort(function(a,b) { return a.nums.localeCompare(b.nums) })
于 2013-07-31T21:30:47.593 回答
0

您需要将对象数组映射为字符串数组,并且需要对字符串进行排序:

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

这是最接近您提供的示例输出的方法:

["1375304393091", "1375304393091", "1375304393109", "1375304393109", "2315456487896", "2315456487896"]
于 2013-07-31T21:35:50.167 回答