0

アルファベット順(「名前」の値)を維持しながら、「グループ」の値でオブジェクトを並べ替え/グループ化するにはどうすればよいですか?

例:前

    [{
        name:'A'
        group:'a',
    },
    {
        name:'A'
        group:'b',
    },
    {
        name:'B'
        group:'a',
    },
    {
        name:'B'
        group:'b'
    }]

    [{
        name:'A'
        group:'a',
    },
    {
        name:'B'
        group:'a',
    },
    {
        name:'A'
        group:'b',
    },
    {
        name:'B'
        group:'b'
    }]
4

1 に答える 1

1

グループが等しいかどうかを確認し、等しい場合は名前を比較します。グループが等しくない場合は、グループを比較します。

var a = [{
    name: 'A',
    group: 'a'
}, {
    name: 'A',
    group: 'b'
}, {
    name: 'B',
    group: 'a'
}, {
    name: 'B',
    group: 'b'
}]

a.sort(function(a, b) {
    return a.group.localeCompare(b.group) === 0 ?
           a.name.localeCompare(b.name) : /*groups are equal, compare names*/
           a.group.localeCompare(b.group); /* groups are not equal, compare groups*/
});
于 2012-08-07T10:36:46.610 に答える