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