Вы можете выполнить замыкание индекса для цикла с конца и временное максимальное значение, которое в начале не определено и получает первое значение из первого элемента.
Затем l oop, а значение при временном индексе меньше, чем score
, сохраните это значение в max
, повторите.
В конце верните результат, если индекс плюс один равен временному индексу.
Это подход занимает один l oop. find
выполняет итерацию от начала массива и внутреннего l oop от конца массива, если оба индекса пересекаются, результат найден.
const
scores = [100, 20, 30, 22, 25, 109, 90],
maxScore = scores.find(
((j, max) => (score, i, array) => {
if (max === undefined) {
max = score;
j = array.length;
}
if (score < max) return;
while (array[j - 1] < score) max = array[--j];
return i + 1 === j;
})
()
);
console.log(maxScore);