Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
忽略第一个维度的二维JavaScript数组问题_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

忽略第一个维度的二维JavaScript数组问题

忽略第一个维度的二维JavaScript数组问题,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,简单地说,我正在基于当前月份和日期填充一个数组。我不会复制代码来获取当前月份和日期,因为它工作正常。它适当地返回变量“月”和“日”。我的数组列表中每天都有一个项。数组以 new var content = [[]]; 然后数组如下所示。。。(节选) 问题是当我要求 document.write(content[month,day]); 它忽略月变量,并转到该特定日期的最后一个可用日变量 我怀疑我试图做一些不可能的事情,但我希望这只是一个小错误。感谢您的帮助。JavaScript没有多维数组。

简单地说,我正在基于当前月份和日期填充一个数组。我不会复制代码来获取当前月份和日期,因为它工作正常。它适当地返回变量“月”和“日”。我的数组列表中每天都有一个项。数组以

new var content = [[]];
然后数组如下所示。。。(节选)

问题是当我要求

document.write(content[month,day]);
它忽略月变量,并转到该特定日期的最后一个可用日变量


我怀疑我试图做一些不可能的事情,但我希望这只是一个小错误。感谢您的帮助。

JavaScript没有多维数组。此外,其数组的索引从0开始,而不是从1开始。你第一句话中的
新的
不属于那里

因此,与此相反:

new var content = [[]];

content[1,1]= "something for Jan 1";
content[1,2]= "something for Jan 2";
您可以使用以下选项:

var content = [ [], [] ];

content[1][1] = "something for Jan 1";
content[1][2] = "something for Jan 2";
或者类似的东西

您应该仔细阅读JavaScript数组语法。听起来好像你在尝试一些事情,却不知道语言中什么是有效的。这样的实验很好,但如果你知道什么样的实验可能会成功,那就更好了

奇怪的是,即使这样的陈述不能满足你的要求:

array[ 1, 2 ] = 'foo';
它是有效的JavaScript。它有什么作用?JavaScript有一个逗号操作符,它计算逗号两边的表达式,并返回右边表达式的值。所以这个表达式:

1, 2
值为2。换句话说,
array[1,2]
忽略
1
,实际上与
array[2]
相同,即返回数组的第三个元素

您可以在JavaScript控制台中进行如下测试:

var a = [ [10,20], [30,40] ];
console.log( a[1,1] );
将打印:

[30, 40]
更新:

以下是您在评论中链接到的代码摘录:

var content = [ [], [] ];

content[1][1]= "placeholder.";
content[1][2]= "placeholder.";
// ...
content[1][30]= "placeholder.";
content[1][31]= "placeholder.";
content[2][1]= "placeholder.";
content[2][2]= "placeholder.";
// ...
content[2][30]= "placeholder.";
content[2][31]= "placeholder.";
content[3][1]= "placeholder.";
content[3][2]= "placeholder.";
// ...
让我们来谈谈这段代码的真正作用。首先,这一行:

var content = [ [], [] ];
这将创建一个包含两个元素的数组,其中每个元素本身都是一个空数组。由于JavaScript从0索引数组,这两个元素是
content[0]
content[1]
。没有
内容[2]
内容[3]
等。这些内容不存在

然后执行以下语句:

content[1][1]= "placeholder.";
content[2][1]= "placeholder.";
现在,
内容
包含:

[ [], [ null, "placeholder." ] ];
不是你想要的,是吗

当你说到这句话:

content[1][1]= "placeholder.";
content[2][1]= "placeholder.";
您将得到一个JavaScript错误:

TypeError: Cannot set property '1' of undefined
这是因为如上所述,
content[2]
不存在

听着,正如我所说的,您需要学习基本的JavaScript概念,比如数组如何工作的细节。这方面有很多好的教程和参考资料

还将学习如何使用JavaScript调试器,这样您就可以看到类似上面的错误,并以交互方式尝试代码

现在回到你想做的事情。您是否希望为一年中的每个月设置一个数组,并为每个月的每一天设置一些内容?要初始化数组,我只需要对整个过程使用一个数组文本

如果您不介意从零开始建立索引,请使用:

var content = [
    [
        "January First",
        "January Second",
        ...
    ],
    [
        "February First",
        "February Second",
        ...
    ],
    ...
];
然后
内容[0][0]
一月一日
内容[1][1]
二月二日
,等等

如果要对月份和天数使用基于1的索引,可以执行以下操作:

var content = [
    null,
    [
        null,
        "January First",
        "January Second",
        ...
    ],
    [
        null,
        "February First",
        "February Second",
        ...
    ],
    ...
];

现在
内容[1][1]
“一月一日”
内容[2][2]
“二月二日”
,等等。

试试
内容[1][2]=“一月一日”取而代之。我不知道这个逗号符号是从哪里来的,但它并不完全有效。谢谢Michael。然而,在你的例子中,我现在得到了一个“未定义”的结果。哪个例子?末尾的
var a=…
正确且有效。如果你有不起作用的代码,请将完整代码添加到你的问题中,我很乐意看一看。对不起,我在看到你添加的注释之前发送了该代码。我指的是第一个例子。var内容=[],[];内容[1][1]=“1月1日的某物”;内容[1][2]=“1月2日的某物”;这只是一些示例代码,展示了如何访问数组数组。这并不是一个完整的工作示例——没有生成任何输出的代码。发布不起作用的代码-完整的代码。如果您可以查看的话,我不会发布300多行代码,而是将其上传到[link]www.gensoup.org/work/content.js。输出将来自调用文件中的简单document.write语句。