Вы можете решить эту проблему кратко с помощью Array.reduce :
let maxDiff = arr => arr.reduce((acc, c, i, arr) => {
if(i && c - arr[i-1] > arr[i-1] - arr[i-2])
acc = [arr[i-1], c]
return acc
}, [])
console.log(maxDiff([3,7,8,66,121,223,228])) // <-- [121,223]
console.log(maxDiff([3,7,8,66,121,223,228,1000])) // <-- [228,1000]
Идея состоит в том, чтобы начать с первого элемента (i == 1)
и оттуда сравнить разницу между последней парой arr[i-1] - arr[i-2]
и текущей парой(c - arr[i-1])
.Если разница больше, перезапишите аккумулятор, пока не дойдете до конца.
На самом деле вы можете набрать одну строку:
let maxDiff = arr => arr.reduce((r,c,i,a) =>
(r = i && c - a[i-1] > a[i-1] - (a[i-2] || 0) ? [a[i-1], c] : r, r), [])
console.log(maxDiff([3,7,8,66,121,223,228])) // <-- [121,223]
console.log(maxDiff([3,7,8,66,121,223,228,1000])) // <-- [228,1000]