Вечер добрый! Какой метод использовать для нахождения максимального значения произведения смежных элементов массива [9, 5, 10, 2, 24, -1, -48]?
Можно использовать reduce:
let arr = [9, 5, 10, 2, 24, -1, -48];
let result = arr.reduce((prev, val) => {
if (!(prev.prevVal * val < prev.max)) {
prev.max = prev.prevVal * val;
}
prev.prevVal = val;
return prev;
}, {max: NaN, prevVal: NaN})
.max;
console.log(result);
Тут есть один тонкий момент, условие if (!(prev.prevVal * val < prev.max)) нельзя заменить на казалось бы эквивалентное if (prev.prevVal * val > prev.max), из-за того, что любое сравнение NaN с числом возвращает false.
Впрочем, банальный вариант с циклом for в данном случае может оказаться проще.
Самым простым вариантом для Вас будет - воспользоваться обычным циклом for, примерно так:
var arr = [9, 5, 10, 2, 24, -1, -48],
max = Number.NEGATIVE_INFINITY;
for(var i = 1; i < arr.length; i++) {
max = Math.max(max, arr[i - 1] * arr[i]);
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости