我應該使用while循環來遍歷這個數組,並將每個項目乘以2.當我嘗試運行它時,頁面會一直保持加載....我錯過了什麼?謝謝。穿越陣列Javascript
var prices = [4, 5, 8, 10];
var i = 0;
while (i < prices.length){
prices[i]++;
i*=2;
}
console.log(prices);
我應該使用while循環來遍歷這個數組,並將每個項目乘以2.當我嘗試運行它時,頁面會一直保持加載....我錯過了什麼?謝謝。穿越陣列Javascript
var prices = [4, 5, 8, 10];
var i = 0;
while (i < prices.length){
prices[i]++;
i*=2;
}
console.log(prices);
你換增量:
var prices = [4, 5, 8, 10];
var i = 0;
while (i < prices.length){
prices[i] *= 2;
i++;
}
console.log(prices);
你解決了我的問題?任何方式,你可以幫助我理解爲什麼我們這樣的格式? –
問題出在你初始化爲0並在每次迭代時乘以2,總是導致0,所以這就是爲什麼你進入了一個無限循環。將i遞增0(在每次迭代時增加1)會改變它的值,並在我到達數組長度時停止循環 - 1. –
問題真的是那個開關。你把我乘以2,並把價格[i]增加1,當你應該增加1並且把價格[i]乘以2 –
正如其他人所指出的那樣,你必須在方式邏輯錯誤您所計算的更新價格。你正在乘以迭代器而不是價格。
ES5解決方案。
var prices = [4, 5, 8, 10];
var updatedPrices = prices.map(function(item) {
return item *= 2;
});
console.log(updatedPrices);
/**
[
8,
10,
16,
20
]
*/
ES6溶液。
const prices = [4, 5, 8, 10];
const updatedPrices = prices.map(item => item *= 2);
console.log(updatedPrices);
/**
[
8,
10,
16,
20
]
*/
'i'是'0'在你的循環的開始,而'0' *什麼是'0'。 – joews
使用調試器並考慮您需要做什麼以及您實際做了什麼。逐步完成該循環的每次迭代,並注意您對「i」和「i」代表的內容。提示,是我的你的指數還是你的價值? – scrappedcola
讀取代碼輸出。你是說在數組的索引中取值並將其增加1。之後,你說增加值爲一段時間,並乘以兩。你不會像你的描述所說的那樣將數組翻倍。 – epascarello