Сортировка рекордов в JavaScript? - PullRequest
0 голосов
/ 29 мая 2020

Здравствуйте, я пишу игру, используя javascript, которая берет имя пользователя, а также «раунд», в котором он прошел, и сохраняет его в двух разных массивах, и я хотел бы отображать имена вместе с оценками, от самого высокого до самого низкого, но я не понимаю, как это сделать, я могу отсортировать раунды от самого высокого до самого низкого, но я не могу понять, как отсортировать имена вместе с ними. Пожалуйста, помогите!

мой текущий код:

        nameScore.push(username);
        highScore.push(round);
        highScore.reverse();

        for (var i = 0; i < highScore.length; i++) {
            $("#highScore").append(nameScore[i] + "  " + highScore[i] + "<br>");
        }

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Не используйте два массива, которые никак не связаны. Просто используйте один массив.

const userScores = [];

// Play game, get score

userScores.push({username, roundNumber, score});

Теперь вы можете искать / отсортировать этот массив, при этом имя пользователя, круглое число и значение счета связаны вместе.

0 голосов
/ 29 мая 2020

В Stackoverflow есть много предложений по обработке синхронной сортировки нескольких массивов. Одна идея, которая пришла мне в голову, - это создание отсортированного массива индексов для пошагового обхода соответствующих массивов, которые остаются несортированными. Вот краткий пример с массивом nam, содержащим имена и массив num с соответствующими оценками. Функция mkidx(arr) ожидает, что массив будет отсортирован после в качестве аргумента (я выбрал num), и возвращает отсортированный (в порядке убывания) индексный массив, который затем может использоваться для пошагового выполнения всех несортированных массивов:

var nam=['eins','zwei','drei'];
var num=[10,200,30];

// create an index array:
const mkidx=arr=>arr.map((v,i)=>
({v,i})).sort((a,b)=> typeof a.v=="string"? a.v.localeCompare(b.v) : b.v-a.v).map(v=>v.i);

mkidx(num).forEach(k=>
console.log(k,nam[k]+': '+num[k])
)

Я создал функцию создания индекса, которая проверяет тип элементов, а затем сортирует их по алфавиту (.localeCompare()) или численно (по убыванию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...