具有2个数组的对象

时间:2013-01-25 14:07:08

标签: 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]);

感谢。

11 个答案:

答案 0 :(得分: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"

答案 1 :(得分:2)

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

所以让我们把它分解。

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

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

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

答案 2 :(得分:1)

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

<强>格[1] [2]

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

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

网格[2 + 1 * 3]

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

答案 3 :(得分:0)

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

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

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

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

答案 4 :(得分:0)

怎么了?在第一种情况下,它是一个2D阵列。在第二种情况下,它是一维数组。在第3个元素之后只有一个输入(在第二个例子中)。这都是

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

这有什么困难?

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

答案 7 :(得分:0)

[&amp;中加上逗号分隔值]创建一个数组,一种列表 您可以通过在数组名称后面的括号中给出“索引”来访问数组中的值。第一项在索引'0'下找到,第二项在'1'下找到,等等。

现在,如果你这样做:

show(grid[1][2]);

它首先得到了网格的第二个位置。嘿,这是一个阵列!所以我们可以得到那个东西的第三个价值!并且该数组的第三个值是'2,1'。对于第二个样本,它只是在运行时计算索引。 2 + 1 * 3 = 5,所以第六个数组项:“2,1”。

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

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

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

答案 10 :(得分:0)

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

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

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

我希望它能清除你的怀疑。