Вот общий способ сортировки массива объектов с несколькими столбцами:
var arr = [
{ id:5, name:"Name3" },
{ id:4, name:"Name1" },
{ id:6, name:"Name2" },
{ id:3, name:"Name2" }
],
// generic comparison function
cmp = function(x, y){
return x > y ? 1 : x < y ? -1 : 0;
};
//sort name ascending then id descending
arr.sort(function(a, b){
//note the minus before -cmp, for descending order
return cmp(
[cmp(a.name, b.name), -cmp(a.id, b.id)],
[cmp(b.name, a.name), -cmp(b.id, a.id)]
);
});
Чтобы добавить другие столбцы для сортировки, вы можете добавить другие элементы в сравнение массивов.
arr.sort(function(a, b){
return cmp(
[cmp(a.name, b.name), -cmp(a.id, b.id), cmp(a.other, b.other), ...],
[cmp(b.name, a.name), -cmp(b.id, a.id), cmp(b.other, a.other), ...]
);
});
EDIT : согласно приведенному ниже комментарию @PhilipZ сравнение массивов в JS преобразует их в строки, разделенные запятыми.