按组和标题对数组进行排序

时间:2014-09-01 15:56:08

标签: javascript arrays sorting

我有一系列项目。

var myArray = [
    {group: 'A', title: 'Title 1'},
    {group: 'B', title: 'Title 2'},
    {group: 'C', title: 'Title 3'},
    {group: 'A', title: 'Title 4'},
    {group: 'A', title: 'Title 5'},
    {group: 'B', title: 'Title 6'},
    {group: 'C', title: 'Title 7'}
];

我想先按组排序数组,然后按标题排序(按字母顺序排列)。

我知道我可以为每个组创建不同的数组然后对它们进行排序,但我认为这应该在一个.sort函数中完成。

2 个答案:

答案 0 :(得分:2)

只需按两个属性排序,首先是组,然后是标题

myArray.sort(function(a,b) {
    var res = a.group.localeCompare(b.group);
    if (res != 0) return res;
    return a.title.localeCompare(b.title);
});

FIDDLE

localeCompare会按字母顺序排序,但请注意Title 16在进行字母排序时会Title 2之前出现。

答案 1 :(得分:0)

这应该有效:

myArray.sort(
    function( a, b ) {
        if ( a.group === b.group ) {
            if ( a.title < b.title ) {
                return -1;
            } else if ( a.title > b.title ) {
                return 1;
            } else return 0;
        } else if ( a.group < b.group ) {
            return -1;
        } else return 1;
    }
);

仅供参考MDN有关于此主题的大量信息。