2 回答

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
由于您將 2 添加到i然后查看iand i + 1,您真的只想在0and之間循環(huán)inputArray.length - 2。
鑒于您的示例代碼,您可以通過更改for循環(huán)來解決此問題:
for(var i = 0; i <= inputArray.length - 2; i = i + 2) {
products.push(inputArray[i] * inputArray[i + 1]);
};
讓我們手動分解它,以便您可以看到它的實(shí)際效果:
i = 0
我們的價(jià)值觀是[2, 3]
誰的產(chǎn)品6
i = 2
我們的價(jià)值觀是[5, 10]
誰的產(chǎn)品50
i = 4
我們的價(jià)值觀是[2, 4]
誰的產(chǎn)品8
。
此時(shí)我們的循環(huán)結(jié)束,因?yàn)?code>inputArray.length - 2也等于4
ie 6 - 2 === 4
。
您可能還需要包括不均勻的陣列進(jìn)行檢查,這樣你就不會的產(chǎn)品最終n
和 undefined
。您可以通過在找到它們的產(chǎn)品之前檢查值并忽略任何undefined
包含的對來做到這一點(diǎn)。
為了更有趣,這里有一個(gè)遞歸版本的函數(shù):
const adjacentElementsProduct = ([a, b, ...rest], agg = []) => rest.length
? adjacentElementsProduct(rest, [...agg, a * b])
: Math.max(...agg);

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
i <= inputArray.length
應(yīng)該是i < inputArray.length
。數(shù)組索引從0
到array.length-1
。當(dāng) 時(shí)i == inputArray.length
,您將兩個(gè)undefined
值相加,從而產(chǎn)生NaN
.
添加回答
舉報(bào)