如何计算两个连续数组元素的最高乘积?

时间:2018-08-12 12:47:57

标签: javascript arrays

我需要通过将两个递增索引位置(即a[0]*a[1]a[1]*a[2])的值相乘来计算最大乘积。实际返回的结果必须是在每个项目上调用的此函数的最大绝对值:

const adjacentElementsProduct = (array) => {
  let maxProduct = 0;

  for (let i = 0; i < array.length; i++) {
    const result = array[i] * array[i + 1];
    if (result > maxProduct) {
      maxProduct = result
    }
  }
  return maxProduct;
}

现在,当使用正整数时,这似乎返回了预期的结果,但是我正在努力理解对于负数它也可能如何工作。在这一点上,我对数组的理解还很肤浅,因此非常欢迎有一个很好的解释。

谢谢。

1 个答案:

答案 0 :(得分:3)

  

现在,当使用正整数时,这似乎返回了预期的结果,但是我正在努力理解对于负数也可以如何工作

完全一样。 -1比-5更高。

如果您想使用负数数组中的最小值,只需将<button type="submit" id="search-start" class="submit btn btn-primary" value="Search" data-ga="event" data-ga-category="Search 6.6" data-ga-action="button" data-ga-label="Search Button"><i class="fa fa-search hidden-sm hidden-md hidden-lg"></i> <span class="hidden-xs">Search</span></button> 更改为>

如果您要在正负两个数组中最高的 absolute 值,则只要将数组全部为负,只需将<更改为>数字,请使用<,然后继续与const result = Math.abs(array[i] * array[i + 1]);进行比较。