您还提到了一个二维数组。
这只是一个数组数组。
让我们回到水果,假设我们有三个数组
var apples = ["gala", "washington", "fuji"];
var bananas = ["cavendish", "plantain", "lady finger"]
var oranges = ["valencia", "navel", "blood"];
假设我们将这三个列表放在另一个列表中
var fruit = [apples, bananas, oranges];
所以,现在“fruit”是一个包含三个列表的列表。或者用 Javascript 的说法,
“fruit”是一个包含三个数组的数组,或者fruit是一个二维数组。
为什么是 2D?好吧,如果我们把它画出来,我们可以看到它是二维的
fruit =
---------------------------------------------
| "gala" | "cavendish" | "valencia" |
| "washington" | "plantain" | "navel" |
| "fuji" | "lady finger" | "blood" |
---------------------------------------------
每个条目几乎可以被认为是 X、Y 坐标平面上的点(我完全会为这个陈述感到悲伤,但对于一个基本示例来说已经足够了)。
"gala" is at (0,0)
"plaintain" is at (1,1)
"blood" is at (2,2)
请记住,我们从 0 开始索引计数!
低看!如果我们在数组fruit上使用这个约定,我们可以从数组中得到一个水果
console.log( fruit[0][0] ); //prints gala
console.log( fruit[1][1] ); //prints plantain
console.log( fruit[2][2] ); //prints blood
console.log( fruit[0][2] ); //prints fuji
console.log( fruit[2][0] ); //prints valencia
好吧,请注意,如果您的所有数组的大小(长度)都相同,这将非常有用,但如果它们不是,那么您将遇到问题。看看
fruit =
---------------------------------------------
| "gala" | "cavendish" | "valencia" |
| "washington" | "lady finger" | "navel" |
| "fuji" | | "blood" |
---------------------------------------------
哇,“plaintain”不见了,所以如果我尝试打印“lady finger”的旧地址
console.log( fruit[1][2] ); //no way! error town!
Javascript 会抱怨。随着“平原”的消失,“女士手指”有了新的索引。在您知道要寻找什么之前,这些类型的东西会让您搞砸。
有点长,希望对你有帮助。