а цикл зачем, чтобы 3 элемента сложить (и я бы понял, если вы хотели утилити добавить, но волшебная цифра 3 все равно в расчете среднего используется)?
а тернарный оператор тут я так понял, чтобы окончательно добить. ведь нам даже else не нужен. дефолтное значение есть в условии.
ну грубо говоря стрелочная функция это анонимная функция (без имени), имеет такой синтаксис:
(arg1 [, arg2, …[argN] ] ) => {…}
особенностью является то, что в скобках записывает return (без самого этого слова).
применяется когда нужно сделать коротенькую операцию для какого-то метода. как раз в сортировке это используется зачастую. ну и у стрелочной функции особые отношения с this
ну добавить поддержку того, что в ТЗ особо не заложено. например, чтобы ваша программа работала также хорошо, если вдруг правила бы изменились и в среднюю попытку засчитывалось не лучшие 3, а например лучшие 5 попыток. всего 1 переменную нужно было бы поправить в slice к примеру.
например, в упрощенном виде нужно было бы написать так:
var maxResult = attempts.slice(0,randomNum);
var sum = 0;
for (var i = 0; i < maxResult.length; i++){
sum+=attempts[i];
}
averageBest = sum/maxResult.length;
Делал с использованием методов массивов. ИМХО так проще, а то у меня еще свежи воспоминания от написания сортировки массива вручную ХД
Спойлеры!
var qualificationDistance = 200;
var attempts = [120, 150, 160, 201, 203, 180, 202];
var qualified = false;
var averageBest = 0;
let sortAttempts = attempts.sort((a, b) => b - a);
let topJump = sortAttempts.slice(0, 3);
let sum = topJump.reduce((a, b) => a + b, 0);
averageBest = sum/topJump.length;
if (averageBest > qualificationDistance) {
qualified = true
}
И ура, хотя бы в испытаниях можно использовать let и не париться, как то привык я к нему, а тут в курсах все больше устаревший var