对于循环-2阵列

Fli*_*sch -1 javascript arrays for-loop sum

我是初学者,我已经被困了几个小时.我有一个简单的for循环问题.我想要一个警告框,它给出了玩家控制的条形总和(它是简单棋盘游戏代码的一部分)

这是我的代码:

    var districts = [{bars:0}, {bars:2}, {bars:2}, {bars:3}, {bars:0}, {bars:3}]; //these are all the districts in the game + the amount of bars on them
    var PlayerControlledDistricts = [districts[0], districts[2], districts[3]]; //these are the 3 districts the player controlls
    var AmountOfBars = 0;
    for (i = 0; i <=PlayerControlledDistricts.length; i++){
             AmountOfBars += parseInt(PlayerControlledDistricts[i].bars, 10);
             }
    alert(AmountOfBars);
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?如果我在for循环中放置一个警报器,我得到:0,2,5 - 所以我认为循环内部的一切都很好 - 但是一旦我把警报器放在循环外面就没有任何事情发生了...

mus*_*fan 5

问题是你循环一个太多的元素,<而不是使用<=

var districts = [{bars:0}, {bars:2}, {bars:2}, {bars:3}, {bars:0}, {bars:3}]; //these are all the districts in the game + the amount of bars on them
var PlayerControlledDistricts = [districts[0], districts[2], districts[3]]; //these are the 3 districts the player controlls
var AmountOfBars = 0;
for (i = 0; i < PlayerControlledDistricts.length; i++){
         AmountOfBars += parseInt(PlayerControlledDistricts[i].bars, 10);
}
alert(AmountOfBars);
Run Code Online (Sandbox Code Playgroud)

这是一个有效的例子


正如@Jamiec所指出的,你实际上并不需要解析数字,因为你已经将它作为一个数字,所以只需:

AmountOfBars += PlayerControlledDistricts[i].bars;
Run Code Online (Sandbox Code Playgroud)