我不明白这个javascript对象发生了什么

时间:2014-01-12 10:42:18

标签: javascript

我正在开展一些codechool的javascript练习,这部分令我感到困惑。 在函数dontPanic中,我不明白在本声明结尾处发生了什么

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);

4 个答案:

答案 0 :(得分:1)

因为数组是0索引的,location["ranger"+i].station可能是1索引的。 location.weaponBulbs是一个数组,因此location.weaponBulbs[1]实际上代表数组中的第二个元素,同样location.weaponBulbs[10]访问第十一个元素。

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

答案 1 :(得分:0)

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

location["ranger"+i].station-1产生一个整数,因此最终结果是

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

的值

答案 2 :(得分:0)

superBlinders数组中选择武器。

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

答案 3 :(得分: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. 中的int
  5. 最后,对于每个station,它会点亮随机weaponBulb强度...

  6. 我学会了如何用javascript编写摇滚!!