我有一系列项目。
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函数中完成。
答案 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);
});
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有关于此主题的大量信息。