2017-07-07 11 views
0

whileループを使用してこの配列を横断し、各項目に2を掛けることになっています。ページを実行すると永遠にロードされます。ありがとうございました。配列をトラバースするJavascript

var prices = [4, 5, 8, 10]; 

var i = 0; 
while (i < prices.length){ 
    prices[i]++; 
    i*=2; 
} 

console.log(prices); 
+3

'i'はあなたのループの開始時に '0'であり、 '0' *何が '0'です。 – joews

+2

デバッガを使用して、実行する必要があることと実際に行っていることを考えます。そのループの各反復をステップ実行し、あなたが「i」と何を表すかに注意を払う。ヒントは、あなたのインデックスまたはあなたの価値ですか? – scrappedcola

+0

コードを読み込みます。あなたは、配列のインデックスの値を取って、それを1つ増やすと言っています。その後、whileのインクリメント値を2倍します。あなたはあなたの記述が言うように配列を倍にしません。 – epascarello

答えて

5

あなたが刻みスワップ:他人として

var prices = [4, 5, 8, 10]; 
 

 
var i = 0; 
 
while (i < prices.length){ 
 
    prices[i] *= 2; 
 
    i++; 
 
} 
 

 
console.log(prices);

+0

問題を修正しましたか?あなたがこのようにフォーマットする理由を理解するのを助けることができる方法はありますか? –

+0

問題は、iを0として初期化し、各繰り返しで2を掛けたため、常に0になるためです。そのため、無限ループで入力したのです。 iを0ずつ増やす(各反復で1を加える)と、その値が変更され、配列-1の長さに達するとループが停止します。 –

+0

問題は本当にそのスイッチです。あなたはiを2倍し、iを1だけ増やし、価格を[i]に2を掛けなければならないときには1で増分しています。 –

-1

が指摘されている、あなたは、更新の価格を計算しているように、論理エラーがあります。あなたは価格ではなく反復子を掛けています。

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 
 
] 
 
*/

関連する問題