2 回答
![?](http://img1.sycdn.imooc.com/5333a1920001d36402200220-100-100.jpg)
TA贡献1859条经验 获得超6个赞
由于您将 2 添加到i然后查看iand i + 1,您真的只想在0and之间循环inputArray.length - 2。
鉴于您的示例代码,您可以通过更改for循环来解决此问题:
for(var i = 0; i <= inputArray.length - 2; i = i + 2) {
products.push(inputArray[i] * inputArray[i + 1]);
};
让我们手动分解它,以便您可以看到它的实际效果:
i = 0
我们的价值观是[2, 3]
谁的产品6
i = 2
我们的价值观是[5, 10]
谁的产品50
i = 4
我们的价值观是[2, 4]
谁的产品8
。
此时我们的循环结束,因为inputArray.length - 2
也等于4
ie 6 - 2 === 4
。
您可能还需要包括不均匀的阵列进行检查,这样你就不会的产品最终n
和 undefined
。您可以通过在找到它们的产品之前检查值并忽略任何undefined
包含的对来做到这一点。
为了更有趣,这里有一个递归版本的函数:
const adjacentElementsProduct = ([a, b, ...rest], agg = []) => rest.length
? adjacentElementsProduct(rest, [...agg, a * b])
: Math.max(...agg);
![?](http://img1.sycdn.imooc.com/545862aa0001f8da02200220-100-100.jpg)
TA贡献1880条经验 获得超4个赞
i <= inputArray.length
应该是i < inputArray.length
。数组索引从0
到array.length-1
。当 时i == inputArray.length
,您将两个undefined
值相加,从而产生NaN
.
添加回答
举报