Как сравнивать и сортировать переменные, включающие название команд и вероятность голов в процентах

У меня есть несколько переменных. Первая переменная всегда содержит название футбольного клуба, а следующая — вероятность гола в процентах.

Пример:

a = "Man City", b=45.55%, c = "Barcelona", d=57.6%, e = "Everton", f=38.53%; и др.

Мне нужно сравнить шансы на гол у всех команд, и отсортировать их по убыванию, с указанием какой команде принадлежит тот или иной шанс.

Когда я использую команду тревога(), я хочу, чтобы вывод был похож на:

1.Barcelona: Chance 57.6%
2.Man City: Chance 45.55%
3.Everton: Chance 38.53%

Что связывает переменную имени команды с соответствующим шансом забить гол? Содержатся ли они вместе в объекте или, может быть, в параллельном массиве? Если бы все они были отдельными, было бы невозможно сказать, какой процент соответствует какой команде.

Nordii 28.05.2019 18:28

Изначально все эти значения были получены командой «Извлечь» из iMacros. Это просто последовательные выдержки.

Dillian 28.05.2019 18:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
2
31
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Эти данные лучше структурировать как массив объектов, и ваша жизнь будет намного проще с консолью javascript (нажмите F12 в браузере и в появившейся панели нажмите «консоль»), например:

var array = [
    {city: "Man City", chance: .4555},
    {city: "Barcelona", chance: .576},
    {city: "Everton", chance: .3853}
];

array.sort((a,b) => (a.chance < b.chance) ? 1 : ((b.chance < a.chance) ? -1 : 0));

for (var item of array) {
    console.info(item);
}

Вам все равно придется отформатировать вероятность в процентах, и это было бы более удобно для использования в элементе на странице, но это даст вам начало.

Ответ принят как подходящий

Может быть более оптимальный способ сделать это, но вот решение, которое я использовал:

  • Составьте заданные вами значения в массив
  • Разделите значения на 2 отдельных массива в зависимости от того, четные они или нет.
  • Перебрать один из новых массивов (при условии, что они имеют одинаковую длину)
  • Создайте массив объектов с ключами city и chance
  • Сортировка массива объектов по значению chance
  • Прокрутите массив объектов для вывода желаемых результатов (я значительно упростил вывод по сравнению с производственной версией)

const a = "Man City";
const b=45.55;
const c = "Barcelona";
const d=57.6;
const e = "Everton";
const f=38.53;

const vars = [a,b,c,d,e,f];
const city = [];
const chance = [];
const results = [];

vars.forEach((x,i) => {
  if (i % 2) {
    chance.push(x);
  } else {
    city.push(x);
  }
});

city.forEach((x,i) => {
  results.push({city: x, chance: chance[i]})
});

results.sort((a,b) => {
  if (a.chance > b.chance) {
    return -1;
  }
  if (a.chance < b.chance) {
   return 1;
  }
  
  return 0;
});

results.forEach((x,i) => {document.write(
(i + 1) + '. ' + x.city + ': Chance ' + x.chance + '%' + '<br>' 
)});

Другие вопросы по теме