JS在数组中按“x”排序对象

时间:2014-03-20 12:00:29

标签: javascript arrays sorting

我一直在为我的家庭照片制作一个小型社交照片分享网站(因为我们想要完全控制图像,本地托管是最好的)。我已经开发出它完美的工作并想要添加功能。

现在我的所有图像都来自MySQL:ROW - >对象对象到数组 - > PHP - > JS数组。数组看起来像

var array = [{'key'='1','title'='title','source'='path / to / image','album'='album},..]

在专辑标签内部,它可能有不同的专辑名称,并且想要对专辑中的阵列基础进行重新排序,我没有想到一种有效的方式。

3 个答案:

答案 0 :(得分:2)

您可以使用 Array.sort()

array.sort(function(a, b) {
    return a.album < b.album;
});

答案 1 :(得分:1)

var array =  [
{'key' :  '1', 'title' :  'title', 'source' :  'path/to/image', 'album' :  'album1'},
{'key' :  '1', 'title' :  'title', 'source' :  'path/to/image', 'album' :  'album2'},
{'key' :  '1', 'title' :  'title', 'source' :  'path/to/image', 'album' :  'album3'},
{'key' :  '1', 'title' :  'title', 'source' :  'path/to/image', 'album' :  'album6'},
{'key' :  '1', 'title' :  'title', 'source' :  'path/to/image', 'album' :  'album5'},
{'key' :  '1', 'title' :  'title', 'source' :  'path/to/image', 'album' :  'album7'},
{'key' :  '1', 'title' :  'title', 'source' :  'path/to/image', 'album' :  'album6'}
];

array.sort(function(a,b){ return a.album > b.album;} );

console.log(array);

http://jsbin.com/xefujehe/1/

答案 2 :(得分:1)

查看MDN上有关Array.prototype.sort的文档。

此方法采用比较功能。这是一个例子:

function compare(a, b) {
  if (a is less than b by some ordering criterion)
     return -1;
  if (a is greater than b by the ordering criterion)
     return 1;
  // a must be equal to b
  return 0;
}

以下是您对专辑名称的排序方式:

var albums = [
{
    key: 110000,
    album: 'Starry nights'
}, {
    key: 100,
    album: 'Zebra kills Zebra'
}, {
    key: 1,
    album: 'Alfred Hitcock Presents'
}, {
    key: 50,
    album: 'baby whales'
}];

albums.sort(function(a, b){
    return a.album === b.album ? 0 : a.album > b.album;
});

console.log(albums);

jsfiddle

在排序所有capital letters come before all lowercase letters

时请注意