Составление списка из сравнения - PullRequest
0 голосов
/ 12 июля 2020

Последние несколько дней я изучал Javascript и то, как составить список из сравнения, я нашел кое-что о массивах, и хотя я знал, что это то, что мне нужно, я не мог понять, как это точно работал с моими очень небольшими знаниями о Javascript.

Я хочу составить список, скажем, у нас есть 5 элементов (возьмем a, b, c, d, e в качестве примеров), а вы ' его просят сравнить один с другим (вам нравится «a» или «d»?), и каждый раз, когда вы выбираете элемент, он получает балл, и он продолжает спрашивать вас, пока не будут выполнены все сравнения с каждым элементом, затем список сделанные на основе этих сравнений, и элементы с наибольшим количеством баллов оцениваются первыми.

если есть статья, видео, код, который я могу проанализировать, все может помочь. Заранее спасибо

1 Ответ

0 голосов
/ 12 июля 2020

Вот пример того, как вы могли бы подойти к этому.

Итак, у вас может быть следующая настройка:

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 () создает новый массив, поэтому вы не изменяете оригинал, как правило, это хорошая практика, но вы можете отсортировать оригинал на месте в зависимости от вашего варианта использования .

Это всего лишь один подход. Конечно, вы хотите подумать о том, как вы хотите организовать данные, что, похоже, вы уже делаете, поэтому вы на правильном пути. По мере того, как вы работаете над этим, если вы обнаружите, что это становится беспорядочным, обновляя вещи и отслеживая данные, это может быть хорошим знаком для повторной оценки и переосмысления, есть ли лучший способ хранения информации.

...