I';我不明白什么';在这个javascript对象中发生了什么

I';我不明白什么';在这个javascript对象中发生了什么,javascript,Javascript,我正在做一些codeschool的javascript练习,这部分让我感到困惑。 在函数dontPanic中,我不理解这句话结尾的内容 location.weaponBulbs[location["ranger"+i].station-1][0]. 基本上,它所说的站-1部分。我不知道为什么要从station对象中减去1。我也不明白station-1后面的[0]。[0]引用的是哪个对象或数组 我猜是1号站之后的[0]。是电台的指定号码,但我确实需要一些澄清。我不想在不理解的情况下继续这节课。

我正在做一些codeschool的javascript练习,这部分让我感到困惑。 在函数dontPanic中,我不理解这句话结尾的内容

location.weaponBulbs[location["ranger"+i].station-1][0]. 
基本上,它所说的
站-1
部分。我不知道为什么要从station对象中减去1。我也不明白station-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);
var superBlinders=[[“火焰风暴”,4000],“太阳死亡射线”,6000],“超新星”,12000]; var Lighthouse Rock={ 是的, 武器:超级盲人, 容量:30, 帕萨格托秘书:“水下前哨”, numRangers:3, 范围1:{姓名:“尼克·沃尔什”,斯基尔兹:“放大烧伤”,电台:2}, 范围二:{姓名:“德鲁·巴伦蒂尼”,斯基尔兹:“上弦发射”,空间站:3}, 范围3:{姓名:“Christine Wong”,技巧:“炸弹拆除”,电台:1} }; 功能dontPanic(位置){ var list=“”;
对于(var i=1;i
位置。武器灯泡
似乎是一个二维数组

location[“ranger”+i]。station-1
生成一个整数,因此最终结果为


location.weaponbulls[n][0]
,其中
n
location[“ranger”+i]的值。station-1
因为数组是0索引的,而
location[“ranger”+i]。station
可能是1索引的。
location.weaponbulls
是数组,所以
location.weaponbulls[1]
实际上表示数组中的第二个元素,类似地,
位置。武器灯泡[10]
访问第十一个元素


通过从整数
位置['ranger'+i].站中减去一,它将正确访问相关数组值。

它正在从
超级盲者
数组中选择武器

由于游侠编号从1开始到3,数组的索引从0开始到2,因此需要从游侠编号中减去1,以便直接将其映射到武器

  • “ranger”+i
    生成一个字符串

  • location.weaponbulls
    在这里是一个数组-所以可能位置看起来像这样

    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}
    ...
    }
    
  • location[“ranger”+i]。在这种情况下,站将成为
    int

  • 最后,对于每个
    ,它会随机点亮一个
    武器灯泡
    强度


  • 哇,我学会了如何用javascript写一块石头!!

    它实际上是
    位置。武器球[((位置[((“ranger”+I)].station)-1][0]
    是一个索引,但数组是零索引的。从站号到数组元素时必须减去一。至于
    [0]
    武器灯泡
    是一组阵列。