Допустим, у меня есть множество пользователей, таких как
const array = [{userid: 1, xp: 36}, {userid: 2, xp: 61}, { userid: 3, xp: 13}......]
Как я могу отсортировать это, что пользователь с наибольшим количеством XP находится в начале массива, а второй идет на второе место в массиве и так далее. Спасибо за ваши ответы. Я знаю о сортировке (a, b), но, похоже, это работает только со строками и числами.
🤔 А знаете ли вы, что...
JavaScript используется для разработки современных одностраничных приложений (SPA), где весь контент загружается асинхронно.
Вы можете передать обратный вызов sort
, который вычитает значения xp
.
const array = [{ userid: 1, xp: 36 }, { userid: 2, xp: 61 }, { userid: 3, xp: 13 }];
const res = array.toSorted((a, b) => b.xp - a.xp);
console.info(res);
Примечание. Если вы используете версию Node.js до 20.x, вам потребуется либо использовать Array.prototype.sort
, либо полифилл для Array.prototype.toSorted
.
// Quick-and-dirty polyfill
Array.prototype.toSorted = Array.prototype.toSorted ?? function(compareFn) {
return [...this].sort(compareFn);
};
Вы можете использовать следующий код для своей проблемы:
const array = [
{ userid: 1, xp: 36 },
{ userid: 2, xp: 61 },
{ userid: 3, xp: 13 },
];
// Custom comparison function
function compareByXP(user1, user2) {
if (user1.xp < user2.xp) {
return 1; // user2 should come before user1
} else if (user1.xp > user2.xp) {
return -1; // user1 should come before user2
} else {
return 0; // user1 and user2 are tied, maintain their original order
}
}
// Sort the array based on XP
array.sort(compareByXP);
console.info(array);
Вы можете указать атрибут объекта xp для сравнения с другим объектом xp с помощью метода массива Javascript Sort()
Используйте приведенное ниже для справки:
const array= [{userid: 1, xp: 36}, {userid: 2, xp: 61}, { userid: 3, xp: 13}];
console.info(array.sort((a, b) => b.xp - a.xp));