Вот пример того, как вы могли бы подойти к этому.
Итак, у вас может быть следующая настройка:
const items = ["a", "b", "c", "d", ...and so on]
const pointsRecord = {"a": 0, "b": 0, "c": 0, ...and so on}
С этими двумя частями вы можете строить пары для сравнения и сохранять отслеживайте точки каждого элемента.
Судя по вашему описанию, вы хотите сравнить каждый элемент с каждым другим элементом в списке. Вам, вероятно, придется дважды l oop просмотреть список и создать пару сравнения, которую вы можете вывести или отобразить на экране.
Вы можете написать функцию для построения пар сравнения, которая будет выглядеть примерно так:
const comparisonPairs = [
[ "a", "b" ],
[ "a", "c" ],
[ "a", "d" ],
[ "b", "c" ],
...and so on
]
С чем-то вроде этого вы можете перебирать пары comparePairs, отображать пару на экране или выводить на терминал. Затем возьмите ввод и обновите объект pointsRecord. Что-то вроде:
pointsRecord = {
...pointsRecord, // copy over all the data from the original point record
[selectedItem]: pointsRecord[selectedItem] + 1 // increment the points of the selected item
}
После обновления pointsRecord вы можете перейти к следующей паре.
Чтобы отсортировать их в конце, вам просто нужно будет запустить функцию сортировки по элементам. Что-то вроде:
const sortedItems = items.slice().sort((a, b) => pointsRecord[b] - pointsRecord[a]);
Добавление .slice () создает новый массив, поэтому вы не изменяете оригинал, как правило, это хорошая практика, но вы можете отсортировать оригинал на месте в зависимости от вашего варианта использования .
Это всего лишь один подход. Конечно, вы хотите подумать о том, как вы хотите организовать данные, что, похоже, вы уже делаете, поэтому вы на правильном пути. По мере того, как вы работаете над этим, если вы обнаружите, что это становится беспорядочным, обновляя вещи и отслеживая данные, это может быть хорошим знаком для повторной оценки и переосмысления, есть ли лучший способ хранения информации.