Javascript 如何按一个属性值(另一个属性值)按字母顺序对关联数组排序?

Javascript 如何按一个属性值(另一个属性值)按字母顺序对关联数组排序?,javascript,arrays,Javascript,Arrays,如何在保持字母顺序(“名称”值)的同时,按“组”值对对象进行排序/分组 例如,在 [{ name:'A' group:'a', }, { name:'A' group:'b', }, { name:'B' group:'a', }, { name:'B' group:'b' }] 之后 检查组是否相等,如

如何在保持字母顺序(“名称”值)的同时,按“组”值对对象进行排序/分组

例如,在

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


检查组是否相等,如果相等,比较名称。如果组不相等,请比较组

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*/
});

我建议使用
.localeCompare
代替运算符来比较字符串值。一是为了方便,二是在某些浏览器上执行得更快@詹迪,哦,是的,我忘了。非常感谢。你为什么不再聊天了P
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*/
});