Я работаю над совершенствованием своих навыков работы с JS и работаю над некоторыми проблемами в CodeSignal. Я работаю над следующей проблемой:
Учитывая массив целых чисел, найдите пару смежных элементов, которая имеет наибольший продукт, и верните этот продукт.
Так, например, учитывая массив [2,3,5,10,2,4]
, я бы хотел сделать следующее:
2 * 3 = 6
5 * 10 = 50
2 * 4 = 8
Затем я хочу вернуть самый большой продукт, в данном случае 50.
Мой подход состоит в том, чтобы выполнить итерацию с циклом for, умножить i * i + 1, поместить продукт в новый массив, затем увеличить цикл for на 2, чтобы я мог умножить следующие два числа в массиве. Когда я закончу вставку в новый массив, я хочу использовать Math.max
и вызвать его для массива чисел, чтобы получить наибольшее произведение.
Math.max
не работает с массивами, поэтому я буду использоватьРаспространите оператор ES6 и сделайте что-то вроде этого: Math.max(...products);
Вот что у меня пока не работает:
function adjacentElementsProduct(inputArray) {
var products = [];
for(var i = 0; i <= inputArray.length; i = i + 2) {
products.push(inputArray[i] * inputArray[i + 1]);
};
// Correctly logs elements of products array
console.log(products);
// NaN error
console.log(Math.max(...products));
return Math.max(...products);
}
Имеет ли эта ошибка NaN отношение к попытке вызоваMath.max и оператор распространения перед завершением цикла for и помещением значений в массив?