遍历数组Javascript

遍历数组Javascript,javascript,while-loop,traversal,Javascript,While Loop,Traversal,我应该使用while循环遍历这个数组,并将每个项乘以2。当我尝试运行页面时,页面一直在加载。。。。我错过了什么?多谢各位 var prices = [4, 5, 8, 10]; var i = 0; while (i < prices.length){ prices[i]++; i*=2; } console.log(prices); var价格=[4,5,8,10]; var i=0; 而(i

我应该使用while循环遍历这个数组,并将每个项乘以2。当我尝试运行页面时,页面一直在加载。。。。我错过了什么?多谢各位

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

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

console.log(prices);
var价格=[4,5,8,10];
var i=0;
而(i
您交换了增量:

var价格=[4,5,8,10];
var i=0;
而(i控制台.日志(价格)您交换了增量:

var价格=[4,5,8,10];
var i=0;
而(i控制台.日志(价格)正如其他人所指出的,在计算更新价格的方式中存在逻辑错误。您是在乘以迭代器,而不是价格

ES5溶液

var价格=[4,5,8,10];
var updatedPrices=prices.map(函数(项){
退货项目*=2;
});
console.log(更新的价格);
/**
[
8.
10,
16,
20
]

*/
正如其他人所指出的,您在计算更新价格时存在逻辑错误。您是在乘以迭代器,而不是价格

ES5溶液

var价格=[4,5,8,10];
var updatedPrices=prices.map(函数(项){
退货项目*=2;
});
console.log(更新的价格);
/**
[
8.
10,
16,
20
]

*/
i
在循环开始时是
0
,而
0
*任何东西都是
0
。使用调试器,思考您需要做什么以及您实际在做什么。逐步完成该循环的每个迭代,并注意对
i
所做的操作以及
i
所代表的内容。提示,
i
是您的索引还是您的值?读取代码。您的意思是获取数组索引中的值并将其递增1。然后你说,取增量值,然后乘以2。您并没有像您描述的那样将数组加倍。
i
在循环开始时是
0
,而
0
*任何东西都是
0
。使用调试器,思考您需要做什么以及您实际在做什么。逐步完成该循环的每个迭代,并注意对
i
所做的操作以及
i
所代表的内容。提示,
i
是您的索引还是您的值?读取代码。您的意思是获取数组索引中的值并将其递增1。然后你说,取增量值,然后乘以2。你没有像你描述的那样将数组加倍。你解决了我的问题吗?你能帮我理解为什么我们要这样格式化吗?问题是因为你把i初始化为0,每次迭代都乘以2,结果总是0,所以你进入了一个无限循环。将i增加0(每次迭代加1)会更改其值,并使循环在i达到数组长度-1时停止。问题实际上是该开关。你把i乘以2,把价格[i]增加1,你应该把i乘以1,把价格[i]乘以2,说得更直白一些<代码>i
以零开始。0*2是否等于价格的长度?你解决了我的问题?你能帮我理解为什么我们要这样格式化吗?问题是因为你把i初始化为0,每次迭代都乘以2,结果总是0,所以你进入了一个无限循环。将i增加0(每次迭代加1)会更改其值,并使循环在i达到数组长度-1时停止。问题实际上是该开关。你把i乘以2,把价格[i]增加1,你应该把i乘以1,把价格[i]乘以2,说得更直白一些<代码>i
以零开始。0*2是否等于价格的长度?