【发布时间】:2012-04-16 07:09:24
【问题描述】:
我有一个字符串已经在js中转换成二维数组。
board = "...|.X.|...|"
用来表示棋盘
每个 .代表一个空格
每个 |代表一行
每个 X 代表一堵墙
编辑:下面的二维数组创建代码
var src= "...|.X.|...|";
board = src.split(/\|/g);
for (var i = 0; i < board.length; i++) {
var cells = board[i].split('');
for (var j = 0; j < cells.length; j++) {
cells[j] = parseInt(cells[j]);
}
board[i][j] = cells;
console.log(board[1][1])
//returns 'X'
当我访问 board[i][j] 时,它会正确返回:
[0][0] = "."
[1][1] = "X"
[1][2] = "."
等等等等
我想用代表一块的字符串更新特定元素。 但是,当我像这样插入元素时:
board[0][0] = "piece4"
数组在 firebug 中返回如下:
board = "piece4|.X.|...|"
什么时候应该是这样的:
board = ".piece4.|.X.|...|"
为什么元素 [0][1] 和 [0][2] 会被覆盖?我在 js 中没有正确理解数组索引访问的数组吗?
【问题讨论】:
-
它们应该从 (0,0) 开始
-
我在您的示例代码中只看到一维字符串。那些二维数组在哪里?所示代码 - 将字符串分配给 var "board" 然后使用 [0][0] 访问它 - 根本不起作用(返回未定义 - 自然!)。
-
没有代码,无法证明数组确实具有您认为的结构。因此,请同时包含数组/代码。
-
那么你是如何从数组中取回字符串的?
-
如果您去了
a = 1;和后来的a = 2,您不会期望 a 为 3,为什么您会期望数组中有任何不同?
标签: javascript multidimensional-array