我正在开展一些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);
答案 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]
,其中n
是location["ranger"+i].station-1
答案 2 :(得分:0)
从superBlinders
数组中选择武器。
由于游侠编号从1开始到3,并且数组的索引从0开始到2,你需要从游侠编号中减去1,以便直接将它们映射到武器。
答案 3 :(得分:0)
"ranger"+i
会产生一个字符串。 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}
...
}
location["ranger"+i].station
将成为此
int
最后,对于每个station
,它会点亮随机weaponBulb
强度...
我学会了如何用javascript编写摇滚!!