var arr = [27, 2, 4, 13]
arr.sort();
устанавливает arr как [13, 2, 27, 4], потому что массивы сортируются как строки по умолчанию в JavaScript
arr.sort(function (a, b) {
return a - b;
});
устанавливает arr как [2, 4, 13, 27], сортируя численно вперед.
arr.sort(function (a, b) {
return b - a;
});
устанавливает arr как [27, 13, 4, 2], сортируя численно в обратном порядке.
var marr = [[]];
marr.shift();
marr.push(["frog", 4, 27, 13]);
marr.push(["frog", 11, 5, 12]);
marr.push(["cat", 16, 3, 5]);
marr.push(["dog", 11, 7, 21]);
marr.push(["cat", 16, 21, 6]);
marr.push(["dog", 10, 280, 5]);
marr.push(["dog", 10, 32, 5]);
marr.sort();
устанавливает marr следующим образом, сортируя строки массива по столбцам по порядку в виде строк ..
["cat", 16, 21, 6]
["cat", 16, 3, 5]
["dog", 10, 280, 5]
["dog", 10, 32, 5]
["dog", 11, 7, 21]
["frog", 11, 5, 12]
["frog", 4, 27, 13]
вызов сортировки по столбцу позволяет сортировать по одному столбцу.
сортировать строки по 3-му столбцу как число ..
marr.sort(function (a, b) {
return a[2] - b[2];
});
["cat", 16, 3, 5]
["frog", 11, 5, 12]
["dog", 11, 7, 21]
["cat", 16, 21, 6]
["frog", 4, 27, 13]
["dog", 10, 32, 5]
["dog", 10, 280, 5]
затем сортировать 4-й столбец в обратном порядке как число ..
marr.sort(function (a, b) {
return b[3] - a[3];
});
["dog", 11, 7, 21]
["frog", 4, 27, 13]
["frog", 11, 5, 12]
["cat", 16, 21, 6]
["cat", 16, 3, 5]
["dog", 10, 32, 5]
["dog", 10, 280, 5]
затем сортируйте 2-й столбец по возрастанию как число
marr.sort(function (a, b) {
return a[1] - b[1];
});
["frog", 4, 27, 13]
["dog", 10, 32, 5]
["dog", 10, 280, 5]
["dog", 11, 7, 21]
["frog", 11, 5, 12]
["cat", 16, 21, 6]
["cat", 16, 3, 5]
уведомление каждый раз, когда вы сортируете, сохраняется предыдущий порядок, где новый столбец совпадает с последовательной строкой.
Теперь вы можете выполнить альфа-сортировку первого столбца
// asc
marr.sort(function (a, b) {
return (a[0] < b[0]) ? -1 : 1;
});
["cat", 16, 21, 6]
["cat", 16, 3, 5]
["dog", 10, 32, 5]
["dog", 10, 280, 5]
["dog", 11, 7, 21]
["frog", 4, 27, 13]
["frog", 11, 5, 12]
// desc
marr.sort(function (a, b) {
return (a[0] > b[0]) ? -1 : 1;
});
["frog", 4, 27, 13]
["frog", 11, 5, 12]
["dog", 10, 32, 5]
["dog", 10, 280, 5]
["dog", 11, 7, 21]
["cat", 16, 21, 6]
["cat", 16, 3, 5]
отсортировать все числовые столбцы в цикле desc: 4, 3, 2
затем отсортируйте 1-й столбец asc как строку
for (var colid = 3; colid > 0; colid--) {
marr.sort(function (a, b) {
return (b[colid] - a[colid]);
});
}
// 1st row as string asc
marr.sort(function (a, b) {
return (a[0] < b[0]) ? -1 : 1;
});
["cat", 16, 21, 6]
["cat", 16, 3, 5]
["dog", 11, 7, 21]
["dog", 10, 280, 5]
["dog", 10, 32, 5]
["frog", 11, 5, 12]
["frog", 4, 27, 13]
объединить эти сортировки .. более логичным образом, в порядке того, какой столбец вы хотите отсортировать и как вы хотите, чтобы он сортировался первым
// c1 asc, c2 desc, c3 asc, c4 asc
marr.sort(function (a, b) {
return (a[0] < b[0]) ? -1 : (a[0] == b[0]) ?
(b[1] - a[1]) || (a[2] - b[2]) || (a[3] - b[3]) : 1;
});
["cat", 16, 3, 5]
["cat", 16, 21, 6]
["dog", 11, 7, 21]
["dog", 10, 32, 5]
["dog", 10, 280, 5]
["frog", 11, 5, 12]
["frog", 4, 27, 13]