Это работает точно так, как задумано (согласно ожидаемому результату), как показано в следующем фрагменте кода.
Проблема должна заключаться в том, как вы отправляете свои данные в виде массива.
alert(checkData([100, 90, 80, 120]));
function checkData(data) {
let max = 0
let min = 0
let drop = 0
for (let i = 0; i < data.length; i++) {
if (max < data[i]) {
max = data[i] //?
} else {
let tempDrop = max - data[i]
drop = Math.max(tempDrop)
min = max - drop
}
}
return [max, min, drop]
}
// Output : 120, 80, 20
Однако, если вы ищете, это Макс, Мин, а затем самая большая разница, то есть между максимумом и минимумом, который в вашемприведенный пример будет 40, тогда вы можете просто сделать это.
alert(checkData([100, 90, 80, 120]));
function checkData(data) {
let max = data.reduce(function(a, b) {
return Math.max(a, b);
});
let min = data.reduce(function(a, b) {
return Math.min(a, b);
});
let drop = max-min;
return [max, min, drop];
}
// Output : 120, 80, 40
Я упоминаю об этом только потому, что не знаю, почему вы сказали, что ожидаете наибольшую разницу, равную 20, при 100 и 80, когда у вас есть120 и 80 в одном и том же массиве, что означает наибольшую разницу в 40.