2D数组返回错误的值

时间:2014-05-01 04:54:11

标签: javascript arrays

var term = [,];
term[0,0]="0";
term[0,1]="1";
term[1,0]="2";
term[1,1]="3";
alert(term[0,1]);

退货3,我不知道为什么。 从逻辑上讲,它应该返回1,正确吗?

3 个答案:

答案 0 :(得分:2)

在JavaScript中,当您使用a, b这样的表达式时,它会同时评估ab,并且表达式的结果将为b。您可以像这样确认

console.log((1, 2));
# 2
console.log((0, 1));
# 1
console.log((1, 0));
# 0

所以,

term[0, 0] = "0";
term[0, 1] = "1";
term[1, 0] = "2";
term[1, 1] = "3";

被评估为

term[0, 0] = term[0] = "0";
term[0, 1] = term[1] = "1";
term[1, 0] = term[0] = "2";
term[1, 1] = term[1] = "3";

因此实际数组只有23。现在,您正尝试访问0, 1,这相当于

term[0, 1] = term[1]

这就是你得到3的原因。

要实际创建二维数组,您需要创建一个主数组并继续向其添加子数组,如下所示

var term = [];
term.push([0, 1]);
term.push([2, 3]);

现在,要访问0, 1的值,您需要这样做

term[0][1]

答案 1 :(得分:1)

2D 表示[[]],而非[,] jsBin example

var term = [[],[]];
term[0][0]="0";
term[0][2]="1";
term[1][0]="2";
term[1][3]="3";

console.log( term );          // [["0", "1"], ["2", "3"]]
console.log( term[0][1] );    // "1"

您也可以使用Array.prototype.push()

插入/附加到数组中

答案 2 :(得分:0)

JavaScript数组不会那样工作。

这是一个应该有效的例子:

var term = []; // Create array
term[0] = ["0", "1"]; // What you referred to as [0,0] and [0,1]
term[1] = ["2", "3"]; // What you referred to as [1,0] and [1,1]

alert(term[0][1]); // Proper JavaScript way to access 2D array.

这是jsfiddle