【问题标题】:Javascript array assignment issueJavascript数组分配问题
【发布时间】:2013-03-10 01:54:37
【问题描述】:

我正在尝试通过使用三层嵌套的四循环为一系列 81 个框分配一个自动 ID 编号。这是我的代码。

function printBoxes()
    {
        alert("Function Entered");
        var box = new Array();
        alert("Array Created");


        for(var i = 0; i < 9; i++)
        {
            for(var j = 0; j < 3; j++)
            {
                for(var k = 0; k < 3; k++)
                {
                    box[i, j ,k] = [i, j, k];
                }
            }
        }

        alert(box[3,5,1]);

        alert("Arrays Created");

        for(var a = 0; a < 9; a++)
        {
            document.writeln("<br>");

            for(var b = 0; b < 3; b++)
            {
                for(var c = 0; c < 3; c++)
                {   document.writeln("<FORM inputs>")
                    document.write("<INPUT type = 'text' id = ' " + box[a,b,c] + " ' value = ' " + box[a,b,c] + "' size = '1' maxlength = '1'/>");
                    document.writeln("<//FORM>")
                }
            }
        }
    }

我的问题是这样的:虽然我可以使用一个警告框来查看每个框都被分配了一个正确的 id,但在它离开主 for 循环后,我分别得到 1/3 820s、821 和 822。我该如何解决这个问题?

【问题讨论】:

  • @ExplosionPills:这是一个数组数组。这是否是一个多维数组还有待商榷,但你会注意到它并没有使用逗号语法。
  • @minitech 文档说“二维”。我认为关于“维度”和“多”的定义没有任何争论。
  • @ExplosionPills:MDN 是一个 wiki。鉴于我们正在讨论它,这是值得商榷的 ;)

标签: javascript arrays variable-assignment


【解决方案1】:

JavaScript 中没有特殊情况的多维数组——只有数组,它可以包含数组。所以每次为每个维度创建一个新数组:

var box = [];

for(var i = 0; i < 9; i++)
{
    box[i] = [];

    for(var j = 0; j < 3; j++)
    {
        box[i][j] = [];

        for(var k = 0; k < 3; k++)
        {
            box[i][j][k] = [i, j, k];
        }
    }
}

……例如。这假装工作的原因是 JavaScript 有一个逗号运算符,它将评估其操作数并返回正确的操作数,所以 box[i, j, k] 真的只是意味着 box[k]

【讨论】:

  • 所有这一切都是使 id 成为荒谬的数字,例如“1,0,0,1,0,1,1,0,2,1,1,0,1,1,1”(这是三个 id 合二为一)并使其中一些未定义。
  • @Existential_Realist:首先:您是否将所有box[*, *, *] 更改为box[*][*][*]?其次,box[3][5][1] 不是有效索引。第二个“级别”只有索引 0、1 和 2。
猜你喜欢
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 2017-05-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
相关资源
最近更新 更多