Я использую OpusScript, который очень похож на Javascript.
Мне нужно отсортировать массив по двум свойствам объектов в нем.
Тип объекта массива - «ScoreEntity» со свойствами «Оценка» и «Время». Мне нужен наивысший балл по индексу 0 массива, и наоборот, с более быстрым переопределением совпадений.
Я пытался делать это целую вечность, и я не могу обдумать это, у меня синдром Субботы!
ОТВЕТ:
В конце я использовал BubbleSort, любые комментарии по улучшению этого приветствуются.
function SortScoreArray(array)
{
var unsorted = true
while (unsorted)
{
// Tracks whether any changes were made, changed to false on any swap
var complete = true
for (var i = 0; i < array.length - 1; i++)
{
// Holds the value for determining whether to swap the current positions
var swap = false
var currentItem = array[i]
var nextItem = array[i + 1]
if (currentItem.Score == nextItem.Score)
{
// The scores are the same, so sort by the time
if (currentItem.Time > nextItem.Time)
{
swap = true
}
}
else if (currentItem.Score < nextItem.Score)
{
swap = true
}
if (swap)
{
array[i] = nextItem
array[i + 1] = currentItem
complete = false
}
}
if (complete)
{
unsorted = false
}
}
return array
}