Сумма смежнных элементов массива

294
24 ноября 2017, 08:48

Вечер добрый! Какой метод использовать для нахождения максимального значения произведения смежных элементов массива [9, 5, 10, 2, 24, -1, -48]?

Answer 1

Можно использовать 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 в данном случае может оказаться проще.

Answer 2

Самым простым вариантом для Вас будет - воспользоваться обычным циклом 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]);
}
READ ALSO
Как сделать анимацию на js

Как сделать анимацию на js

Объясните, как сделана анимация на первом экране сайта nv9ru

264
Делаем самопальный range slider

Делаем самопальный range slider

Ссылка на тему форума про слайдерНужно сделать такой же слайдер,(по такой же технологии, как по ссылке) но с двумя бегунками и между ними должна...

276
Помогите сделать манипуляцию с текстом [требует правки]

Помогите сделать манипуляцию с текстом [требует правки]

Есть текст, его надо согнуть, повернуть, и изменить его содержимое Можно и с фрейм типа как на "все майкиру" и "капирка

193