Javascript:查找相邻数组元素的乘积并返回最大的乘积
我正在努力提高我的JS技能,并解决一些关于CodeSignal的问题。我正在处理以下问题: 给定一个整数数组,找到具有最大乘积的相邻元素对并返回该乘积。 例如,给定数组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,这样我就可以将数组中接下来的两个数字相乘。当我完成推进新数组时,我想使
[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;ii来说,因为您将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);