2014-01-12 55 views
0

我正在做一些codechool的javascript练习,这部分让我感到莫名其妙。 在功能dontPanic,我不明白这是怎么回事就在这个声明我不明白这个JavaScript对象发生了什么

location.weaponBulbs[location["ranger"+i].station-1][0]. 

基本上,它说:station-1部分的结束。我不知道为什么它会从站对象中减去1。在站1之后我也不理解[0]。哪个对象或数组是[0]指的?

我的猜测是站1后的[0]。是为车站分配的号码,但我真的需要一些澄清。如果不理解这一点,我不想继续这一课。我在上面提出了一条评论,我需要帮助理解。

var superBlinders = [ ["Firestorm", 4000], ["Solar Death Ray", 6000], ["Supernova",   12000] ]; 
var lighthouseRock = { 
    gateClosed: true, 
    weaponBulbs: superBlinders, 
    capacity: 30, 
    secretPassageTo: "Underwater Outpost", 
    numRangers: 3, 
    ranger1: {name: "Nick Walsh", skillz: "magnification burn", station: 2}, 
    ranger2: {name: "Drew Barontini", skillz: "uppercut launch", station: 3}, 
    ranger3: {name: "Christine Wong", skillz: "bomb defusing", station: 1} 
}; 
function dontPanic (location){ 
    var list = ""; 
    for(var i = 1; i<=location.numRangers; i++){ 
//this is what I don't understand  
list = list + location["ranger" + i].name + ", man the " + 
     location.weaponBulbs[location["ranger"+i].station-1][0] + 
     "!\n"; 
    } 
    alert("Avast, me hearties!\n" + 
    "There be Pirates nearby! Stations!\n" + list); 
} 
dontPanic(lighthouseRock); 
+1

它实际上是'location.weaponBulbs [((location [(“ranger”+ i)] .station) - 1)] [0]' – aggelgian

+0

'station'是一个索引,但是数组是零索引的。从站号到数组元素时,必须减去一个。至于'[0]','weaponBulbs'是一个数组数组。 – Blender

回答

1

因为数组的值的0索引,并且location["ranger"+i].station很可能1索引。 location.weaponBulbs是一个数组,因此location.weaponBulbs[1]实际上表示数组中的第二个元素,并且类似地location.weaponBulbs[10]访问第11个元素。

通过从整数location['ranger'+i].station中减去1,它将正确访问相关的数组值。

0

location.weaponBulbs似乎是一个二维数组。

location["ranger"+i].station-1产生一个整数,所以最后的结果是

location.weaponBulbs[n][0],其中nlocation["ranger"+i].station-1

0

它从superBlinders阵列中选择武器。

由于游侠编号从1开始到3,并且数组的索引从0开始到2,所以您需要从游侠编号中减去1以便将它们直接映射到武器。

0
  1. "ranger"+i产生一个字符串。
  2. location.weaponBulbs这里是一个数组 - 所以可能的位置是这样的......

    var location = { 
    "weaponBulbs":superBlinders, /* this is an array again */ 
    ranger1: {name: "Nick Walsh", skillz: "magnification burn", station: 2}, 
    ranger2: {name: "Drew Barontini", skillz: "uppercut launch", station: 3}, 
    ranger3: {name: "Christine Wong", skillz: "bomb defusing", station: 1} 
    ... 
    } 
    
  3. location["ranger"+i].station将成为这个

  4. 最后每个stationint,它照亮了随机weaponBulb强度...

如果我学习了如何在JavaScript中编写一个岩石!

相关问题