0

有人能解释一下为什么这两条代码的结果是“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]);

谢谢。

4

11 回答 11

4
// 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

// This is just a simple array with elements, again the indexes
// start at 0.

/* index:   0    , 1    ,  2   , 3    , 4    , 5    */
var grid = ["0,0", "1,0", "2,0", "0,1", "1,1", "2,1"];
show(grid[2 + 1 * 3]); // order of operations applies so 2+1*3 is actually:
                       // "2+(1*3)" => "2+3" => "5"
                       // so grid[5] = "2,1"
于 2013-01-25T14:11:23.477 回答
2

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

所以让我们分解一下。

grid[1]实际上指向第二个数组["0,1", "1,1", "2,1"]

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

至于第二个数组,访问grid[5]是指向数组中的第六个值,这也是2,1

于 2013-01-25T14:10:19.697 回答
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]

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

于 2013-01-25T14:10:44.133 回答
0

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

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

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

在第二个中,您有 1 个包含 6 个事物的数组,并且您的索引2 + 1 * 3计算为 5,这是数组中的第 6 个事物。

于 2013-01-25T14:09:32.620 回答
0

怎么了?在第一种情况下,它是一个二维数组。在第二种情况下,它是一维数组。在第三个元素之后只有一个输入(在第二种情况下)。就这样

于 2013-01-25T14:10:15.503 回答
0

第一个函数:show(grid[1][2])输出第二个数组的第三个元素,所以2,1

对于第二个 2 + 1 * 3 = 5 所以它显示 grid[5]

于 2013-01-25T14:10:16.647 回答
0

这有什么难的?

最后一个选择结果是“grid[5]”,这是“2,1”。

于 2013-01-25T14:12:28.233 回答
0

[在&中包含逗号分隔的值]会创建一个数组,一种列表。
您可以通过在数组名称后的括号中给出“索引”来访问数组中的值。第一项在索引“0”下找到,第二项在“1”下找到,依此类推。

现在,如果你这样做:

show(grid[1][2]);

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

于 2013-01-25T14:12:34.210 回答
0

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

于 2013-01-25T14:12:36.737 回答
0

在第一个示例中, 的值grid[1]是数组中的第二项,即数组["0,1", "1,1", "2,1"],因此 的值grid[1][2]是该值中的第三项,即"2,1"

在第二个示例中, 的值2 + 1 * 35,并且grid[5]是数组中的第六个元素,即"2,1"

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

于 2013-01-25T14:13:19.140 回答
0
var grid = [["0,0", "1,0", "2,0"],
            ["0,1", "1,1", "2,1"]];
show(grid[1][2]);

数组索引位置总是从 开始0grid是一个二维数组。

显示(网格[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"

我希望它能消除你的疑问。

于 2013-01-25T14:16:34.297 回答