Для этого вы захотите использовать Array.sort()
. Любой вид сортировки, который вы хотите сделать, сводится к 3 основным результатам: a > b
, a < b
, a = b
. Они соответствуют возвращаемым значениям 1
, -1
и 0
соответственно. Так что на самом деле единственный трюк "что такое a
и b
?"И это вопрос, на который вы должны ответить. Это голоса? это имя? это рейтинг? и т.д.
Вот пример:
var objs = [
{name: "Bob", age: 30},
{name: "Susan", age: 35},
{name: "Jennifer", age: 22}
];
function sortByName(a, b, sortAsc = true) {
var val1 = a.name;
var val2 = b.name;
let result = ((val1 < val2) ? -1 : ((val1 > val2) ? 1 : 0));
if (!sortAsc) {
result *= -1;
}
return result;
}
// sort by name (ascending)
console.log(objs.sort((a, b) => sortByName(a, b, true)));
// sort by name (descending)
console.log(objs.sort((a, b) => sortByName(a, b, false)));
function sortByAge(a, b, sortAsc = true) {
var val1 = a.age;
var val2 = b.age;
let result = ((val1 < val2) ? -1 : ((val1 > val2) ? 1 : 0));
if (!sortAsc) {
result *= -1;
}
return result;
}
// sort by age (ascending)
console.log(objs.sort((a, b) => sortByAge(a, b, true)));
// sort by age (descending)
console.log(objs.sort((a, b) => sortByAge(a, b, false)));
Как видите, единственное, что отличается между этими двумя функциями (sortByName
и sortByAge
), это свойство, на основе которого я построил свои значения сравнения. Используя это, мы можем создать общую функцию sortByProperty
, которая использует эти понятия.
var objs = [
{name: "Bob", age: 30},
{name: "Susan", age: 35},
{name: "Jennifer", age: 22}
];
function sortByProperty(a, b, property, sortAsc = true) {
var val1 = a[property];
var val2 = b[property];
let result = ((val1 < val2) ? -1 : ((val1 > val2) ? 1 : 0));
if (!sortAsc) {
result *= -1;
}
return result;
}
function sortByName(items, sortAsc = true) {
return objs.slice().sort((a, b) => sortByProperty(a, b, "name", sortAsc))
}
// sort by name (ascending) using helper function
console.log(sortByName(objs));
// sort by age (descending) calling sortByProperty directly
console.log(objs.slice().sort((a, b) => sortByProperty(a, b, "age", false)));
Отсюда выглядит, как только у вас есть набор данных, вы знаете, как поместить его в таблицу и выполнить разбиение по страницам, и т. Д., Чтобы я не стал беспокоитьсяв это. Дайте мне знать, если у вас есть какие-либо вопросы!