let qualificationDistance = 200;
let attempts = [120, 150, 160, 201, 203, 180, 202];
let qualified = false;
let averageBest = 0;
for (let i = 0; i < attempts.length; i++) {
let maxValue = attempts[i]
for (let j = i+1; j < attempts.length; j++) {
if (attempts[j] > maxValue) {
maxValue = attempts[j]
let swap = attempts[i]
attempts[i] = maxValue
attempts[j] = swap
}
}
}
averageBest = (attempts[0] + attempts[1] + attempts[2]) / 3;
qualified = (averageBest >= qualificationDistance) ? true : false;
// ? Тоже, что и if (В коротких проверках, удобнее).
/*
if (attempts[j] > minValue)
Если знак > поменять на < в начале массива соберутся
индексы с меньшим значением, в реализованном варианте всё
наоборот, собраны индексы с большим значением (для удобства определения 3-х лучших прыжков.) if (attempts[j] > minValue)
*/
let qualificationDistance = 200;
let attempts = [120, 150, 160, 201, 203, 180, 202];
let qualified = false;
let averageBest = 0;
//Сортируем масив в обратном направлении
//Метод splice оставляет три лудших результата
attempts.sort((a, b) => a - b).reverse().splice(3);
//Расчёт среднего значения этих трёх прыжков
averageBest = (attempts[0] + attempts[1] + attempts[2]) / 3;
// Условие задачи на прохождение квалификации
if (averageBest > qualificationDistance) {
qualified = true;
}
ещё один вариант решения, самый, вроде как, краткий из представленных
let qualificationDistance = 200;
let attempts = [120, 150, 160, 201, 203, 180, 202];
let qualified = false;
let averageBest = 0;
// Сортируем массив по убыванию и выбираем первые три элемента
let topThree = attempts.sort((a, b) => b - a).slice(0, 3);
// Вычисляем среднее значение этих трех элементов
averageBest = topThree.reduce((sum, value) => sum + value, 0) / topThree.length;
qualified = averageBest > qualificationDistance;
// Проверяем, является ли среднее значение больше qualificationDistance
let qualificationDistance = 200;
let attempts = [120, 150, 160, 201, 203, 180, 202];
let qualified = false;
let averageBest = 0;
for (let i = 0; i < attempts.length; i++) {
// Берём минимальное значение, это первый элемент массива attempts[0] = 120 и сохраняем в переменную minValue
let minValue = attempts[i];
for (let j = i + 1; j < attempts.length; j++) {
//Цикл для сортировки элементов, j = i + 1 потому что начинаем проверку со 2 элемента(attempts[1])
if (attempts[j] < minValue) {
// Здесь задаём условие что если элементы в цикле меньше нашего 1 элемента в minValue
minValue = attempts[j]
// То перезаписываем меньший элемент в minValue
let swap = attempts[i]
// создаём новую переменную чтобы сохранить туда наше первое значение 1 элемент (чтобы не исчезло)
attempts[i] = minValue
attempts[j] = swap
// а тут просто меняем местами 1 и 2 элемент
}
}
}
console.log(attempts)
// Берём 3 средних значения(элемента массива)
let one = attempts[attempts.length - 1]
let two = attempts[attempts.length -2]
let three = attempts[attempts.length - 3]
// Формула вычисления
averageBest = (one + two + three) / 3
// Проверка по условию ТЗ
if (averageBest > qualificationDistance) {
qualified = true;
} else {
qualified = false;
}