Вечер добрый! Какой метод использовать для нахождения максимального значения произведения смежных элементов массива [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]);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Ссылка на тему форума про слайдерНужно сделать такой же слайдер,(по такой же технологии, как по ссылке) но с двумя бегунками и между ними должна...
Есть текст, его надо согнуть, повернуть, и изменить его содержимое Можно и с фрейм типа как на "все майкиру" и "капирка