Javascript 使用forEach的目标数组元素

Javascript 使用forEach的目标数组元素,javascript,arrays,foreach,Javascript,Arrays,Foreach,此函数将数组数与其相邻数组数相乘,并返回最大乘积。我尝试使用forEach创建此函数,但无法使inputArray[I+1]正常工作。如何将forEach中的数组元素作为目标?谢谢 function adjacentElementsProduct(inputArray) { var product = inputArray[0] * inputArray[1]; for(var i = 0; i < inputArray.length; i++) { if((inputAr

此函数将数组数与其相邻数组数相乘,并返回最大乘积。我尝试使用forEach创建此函数,但无法使inputArray[I+1]正常工作。如何将forEach中的数组元素作为目标?谢谢

function adjacentElementsProduct(inputArray) {
  var product = inputArray[0] * inputArray[1];
  for(var i = 0; i < inputArray.length; i++) {
    if((inputArray[i] * inputArray[i + 1]) > product) {
      product = inputArray[i] * inputArray[i + 1];
    }
  }
  console.log(product);
}
函数邻接元素产品(输入阵列){
var乘积=输入阵列[0]*输入阵列[1];
for(变量i=0;i产品){
产品=输入阵列[i]*输入阵列[i+1];
}
}
控制台日志(产品);
}

您可以获取给定数组的副本,从第二个元素开始,并在该数组上迭代。然后取迭代数组和原始数组的相同索引的乘积作为乘积。如有必要,比较并更新
产品

工作原理:

函数邻接元素产品(输入阵列){
var乘积=输入阵列[0]*输入阵列[1];
片(1).forEach(函数(a,i){
var p=输入阵列[i]*a;
如果(p>产品){
乘积=p;
}
});
控制台日志(产品);
}
邻接元素产品([1,3,5,3,7,4,8,2])参数提供当前索引和数组对象。无法直接获取参数中的下一个值

inputArray.forEach(function(currentValue, index, array){
    product = currentValue * array[index+1]
});
如中所述,foreach回调函数采用3个参数:

  • 元素值
  • 元素索引
  • 正在遍历的数组
因此,您可以访问下一项,如下所示:

myArray.forEach(function(value, index, array) {
  product = value * array[index + 1];
}
我让您完成代码以获得更高的产品;)

的回调函数接受三个参数—当前项、当前索引和数组

将代码转换为forEach的过程如下所示:

function adjacentElementsProduct(inputArray) {
    let product = inputArray[0] * inputArray[1];
    inputArray.forEach((item, index, array) => {
        if (item * array[index + 1] > product) {
            product = item * array[index + 1];
        }
    });
    console.log(product);
}
在我看来,它更适合解决这类问题

function adjacentElementsProduct(inputArray) {
    const result = inputArray.reduce((largestSoFar, current, index, array) => {
        const product = current * array[index + 1];
        return (largestSoFar === null || product > largestSoFar) ?
            product :
            largestSoFar;
    }, null);
    console.log(result);
}

... 在上一次迭代中,
array[index+1]
未定义的。这就是OP的问题。问题是如何在forEach中定位数组元素的邻居?我回答了这个问题,但我让他完成了实施;)最后一次迭代是NaN。是的,我知道,我没有说相反的话。我让他自己去发现。我只是回答它的问题。。。目标只是帮助他,而不是为他编写代码。slice().forEach()是一种有趣的方法。谢谢reduce版本给出的
[-1,1]
结果不正确。谢谢你,安迪,我忘记了forEach有一个索引参数。这回答了我的问题。上一次迭代检查输入数组之外的索引,但函数仍然有效的原因是
NaN>任何东西
都是
false
function adjacentElementsProduct(inputArray) {
    const result = inputArray.reduce((largestSoFar, current, index, array) => {
        const product = current * array[index + 1];
        return (largestSoFar === null || product > largestSoFar) ?
            product :
            largestSoFar;
    }, null);
    console.log(result);
}