Javascript:查找相邻数组元素的乘积并返回最大的乘积

Javascript:查找相邻数组元素的乘积并返回最大的乘积,javascript,arrays,math,ecmascript-6,iteration,Javascript,Arrays,Math,Ecmascript 6,Iteration,我正在努力提高我的JS技能,并解决一些关于CodeSignal的问题。我正在处理以下问题: 给定一个整数数组,找到具有最大乘积的相邻元素对并返回该乘积。 例如,给定数组[2,3,5,10,2,4],我希望执行以下操作: 2 * 3 = 6 5 * 10 = 50 2 * 4 = 8 然后我想退回最大的产品,在这个例子中是50 我的方法是使用for循环进行迭代,将i*i+1相乘,将乘积放入一个新数组中,然后将for循环增加2,这样我就可以将数组中接下来的两个数字相乘。当我完成推进新数组时,我想使

我正在努力提高我的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 spread运算符并执行以下操作:
Math.max(…产品)

以下是迄今为止我所拥有的不起作用的东西:

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);

}
函数邻接元素产品(输入阵列){
var乘积=[];

对于(var i=0;i
i来说,因为您将2添加到
i
中,然后查看
i
i+1
,所以您实际上只希望在
0
inputArray.length-2
之间循环

给定示例代码,您可以通过更改
for
循环来解决此问题,如下所示:

for(var i = 0; i <= inputArray.length - 2; i = i + 2) {
        products.push(inputArray[i] * inputArray[i + 1]);

};

仔细观察
产品
,它不仅是预期的数字。如果循环条件为off,则应为
i
i
就可以了。
const adjacentElementsProduct = ([a, b, ...rest], agg = []) =>  rest.length 
? adjacentElementsProduct(rest, [...agg, a * b]) 
: Math.max(...agg);