gpt4 book ai didi

javascript 二维数组不返回正确的值

转载 作者:行者123 更新时间:2023-11-29 16:57:24 26 4
gpt4 key购买 nike

我正在测试石头剪刀布蜥蜴 spock 游戏。我没有生成可能的结果,而是使用 var matrix = [ ] 来捕捉所有的可能性。在数组位置 matrix[3,0],输入的字符串是“rock wins”。但是,我在数组之后运行了 console.log(matrix[3,0]) 并且产生了不同的结果。

谁能告诉我这是为什么?

var matrix = [];

matrix[0,0] = "it's a tie";
matrix[0,1] = "Paper wins";
matrix[0,2] = "rock wins";
matrix[0,3] = "rock wins";
matrix[0,4] = "Spock wins";
matrix[1,0] = "Paper wins";
matrix[1,1] = "it's a tie";
matrix[1,2] = "Scissors win";
matrix[1,3] = "Lizard wins";
matrix[1,4] = "Paper wins";
matrix[2,0] = "rock wins";
matrix[2,1] = "Scissors win";
matrix[2,2] = "it's a tie";
matrix[2,3] = "Scissors win";
matrix[2,4] = "spock wins";
matrix[3,0] = "rock wins";

log.console(matrix[3,0]); //returns spock wins

最佳答案

不,它没有。它实际上返回“rock wins”。
简而言之,您使用了不正确的语法。

为什么会这样?

您可能会错过这部分并直接转到“应该如何?”如果您对理解 JavaScript 的神奇行为不感兴趣。

  1. 您已经声明了一个一维数组。
  2. 当您尝试分配或读取以下属性 matrix[0,0] 时,0,0 被识别为表达式,它计算为最后一个数字(在本例中为 0)。

意思是

matrix[0,0] = "it's a tie";
matrix[0,1] = "Paper wins";
matrix[0,2] = "rock wins";
// ...
matrix[2,3] = "Scissors win";
matrix[2,4] = "spock wins";
matrix[3,0] = "rock wins";
console.log(matrix[3,0]);

相同
matrix[0] = "it's a tie";
matrix[1] = "Paper wins";
matrix[2] = "rock wins";
// ...
matrix[3] = "Scissors win";
matrix[4] = "spock wins";
matrix[0] = "rock wins";
console.log(matrix[0]); // returns "rock wins"

阅读更多相关信息 in this StackOverflow topic .

原因是您使用了错误的语法。

应该如何?

这就是您在 JavaScript 中访问多维数组中的值的方式:

var val = arr[key1][key2][key3]; // not arr[key1, key2, key3]

你的代码应该是这样的:

var matrix = [];
for (var i = 0; i < 4; i++) matrix[i] = [];

matrix[0][0] = "it's a tie";
matrix[0][1] = "Paper wins";
matrix[0][2] = "rock wins";
// ...
matrix[2][3] = "Scissors win";
matrix[2][4] = "spock wins";
matrix[3][0] = "rock wins";
document.write(matrix[3][0]); // not matrix[3,0]

另一个不错的选择是以这种方式描述您的二维数组:

var matrix = [
["it's a tie", "Paper wins", "rock wins"],
["Paper wins", "it's a tie", "Scissors wins"]
// ...
];

关于javascript 二维数组不返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31153443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com