Javascript 具有2个数组的对象

Javascript 具有2个数组的对象,javascript,arrays,Javascript,Arrays,有人能解释一下为什么这两段代码的结果是“2,1”吗?我不明白这两个部分是如何返回结果的 var grid = [["0,0", "1,0", "2,0"], ["0,1", "1,1", "2,1"]]; show(grid[1][2]); var grid = ["0,0", "1,0", "2,0", "0,1", "1,1", "2,1"]; show(grid[2 + 1 * 3]); 谢谢。因为在这两种情况下,指定的索引都指向字符串

有人能解释一下为什么这两段代码的结果是“2,1”吗?我不明白这两个部分是如何返回结果的

var grid = [["0,0", "1,0", "2,0"],
            ["0,1", "1,1", "2,1"]];
show(grid[1][2]);


var grid = ["0,0", "1,0", "2,0",
            "0,1", "1,1", "2,1"];
show(grid[2 + 1 * 3]);

谢谢。

因为在这两种情况下,指定的索引都指向字符串“2,1”

记住,javascript数组使用基于0的索引,因此索引0是数组中的第一个,索引1是第二个,依此类推

在第一个数组中,索引
[1][2]
指向第二个数组,即该数组中的第三个数组


在第二个数组中,您有一个包含6个内容的数组,您的索引
2+1*3
计算结果为5,这是数组中的第6个内容。

怎么了?在第一种情况下,它是一个二维数组。第二种情况是一维数组。在第三个元素之后只有一个回车符(在第二种情况下)。这就是第一个函数:
show(grid[1][2])
输出第二个数组的第三个元素,因此
2,1

var grid = [["0,0", "1,0", "2,0"],
            ["0,1", "1,1", "2,1"]];

对于第二个2+1*3=5,它显示了网格[5]

Javascript中的索引从0开始,而不是1

让我们把它分解一下

网格[1]
实际上指向第二个数组
[“0,1”、“1,1”、“2,1”]

因此,
grid[1][2]
指向该数组中的第三个值,即
2,1

var grid = [["0,0", "1,0", "2,0"],
            ["0,1", "1,1", "2,1"]];
对于第二个数组,访问
网格[5]
指向数组中的第六个值,也是
2,1

var grid = [["0,0", "1,0", "2,0"],
            ["0,1", "1,1", "2,1"]];
网格[1][2]

数组从0开始计数。因此,
grid[1]
是数组的后半部分,
grid[1][2]
是第二个数组中的第三个值

var grid = ["0,0", "1,0", "2,0",
        "0,1", "1,1", "2,1"];
网格[2+1*3]

网格[2+1*3]===网格[5]
:数组中的第6个值

// A two-dimensional array is like having a table with rows and columns,
// though the first element always starts with "0" (as opposed to 1)

var grid = [
/* column:  0    , 1    , 2
/* row 0 */["0,0", "1,0", "2,0"],
/* row 1 */["0,1", "1,1", "2,1"]
];
show(grid[1][2]); // row 1, column 2


这有什么难的


最后一次选择的结果是“网格[5]”,这是“2,1”。

将逗号分隔的值括在
[
&
]
中创建一个数组,一种列表。
通过在数组名称后的括号中提供“索引”,可以访问数组中的值。第一项位于索引“0”下,第二项位于“1”下,依此类推

现在,如果您这样做:

show(grid[1][2]);

它首先在网格的第二个位置获取对象。嘿,这是一个数组!所以我们可以得到那东西的第三个值!这个数组的第三个值是'2,1'。与第二个示例相同,它只动态计算索引。2+1*3=5,所以第六个数组项:“2,1”。

嘿,我想你错过了从0开始的数组索引。所以第一种情况下的网格[0][0]和第二种情况下的网格[0]应该是“0,0”,第一种情况下的网格[1][1]是“1,1”,第二种情况下的网格[1]是“1,0”(现在不奇怪了:)

在第一种情况下,
grid[1]
的值是数组中的第二项,即数组
[“0,1”,“1,1”,“2,1”
,因此,
网格[1][2]
的值是该值中的第三项,即
“2,1”

在第二个示例中,
2+1*3
的值是
5
,而
grid[5]
是数组中的第六个元素,即
“2,1”

示例显示了在Javascript中处理二维数据的两种不同方法。如果将数组视为具有特定大小的段,这类似于拥有一个数组数组,其中子数组具有该特定大小

var grid = [["0,0", "1,0", "2,0"],
            ["0,1", "1,1", "2,1"]];
show(grid[1][2]);
数组索引位置始终从
0
开始<代码>网格是一个二维数组

显示(网格[1][2])

grid[1] == ["0,1", "1,1", "2,1"] //2nd element in the grid array .

grid[1][2] = "2,1"; //3rd element in grid[1] .
显示(网格[2+1*3])

var grid = ["0,0", "1,0", "2,0",
            "0,1", "1,1", "2,1"];

`grid[2+1*3]` == `grid[5]` // 2+1*3=5
 grid[5] = "2,1"

我希望这能消除你的疑虑

问题在哪里?在计算2+1*3时?你到底不明白什么?两个成员访问都会产生相同的值,因为您的数据就是这样构造的。嘿,各位,我们知道每个用户都知道会发生什么,但没有必要添加更多的答案!这看起来像是我的家庭作业问题。这不是一个函数-1.当我说函数时,我说的是
show()
不是网格。我知道那不是一个函数。但就目前的情况来看,我们看不到这一点。但我会取消我的否决票。我的投票被锁定,你能编辑你的答案并让我知道,这样我就可以取消你的投票吗?我编辑了,但别担心,我不介意否决票。你是对的,我的答案模棱两可:)在编辑之前我已经对这个答案加了+1,我该怎么做+2?:)谢谢,现在我知道这很容易。我没有看到[1]是关于第一排的