Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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 &引用;类型错误:can';t将未定义的转换为对象“;动态调整二维阵列大小时_Javascript - Fatal编程技术网

Javascript &引用;类型错误:can';t将未定义的转换为对象“;动态调整二维阵列大小时

Javascript &引用;类型错误:can';t将未定义的转换为对象“;动态调整二维阵列大小时,javascript,Javascript,我想读一些文本,由逗号分隔的数字组成的三元组,每行一个三元组,组成一个2D数组。我事先不知道数组的维数是多少。我使用以下代码 // Read data into a matrix var inputData = [[]]; while (allTextLines.length>0) { dataRecord=allTextLines.shift(); entries = dataRecord.s

我想读一些文本,由逗号分隔的数字组成的三元组,每行一个三元组,组成一个2D数组。我事先不知道数组的维数是多少。我使用以下代码

        // Read data into a matrix
        var inputData = [[]];
        while (allTextLines.length>0) {
            dataRecord=allTextLines.shift();
            entries = dataRecord.split(',');
            var xCoord=parseInt(entries.shift());
            var yCoord=parseInt(entries.shift());
            var zCoord=parseInt(entries.shift());
            if (yCoord>=inputData.length) inputData[yCoord]=[];
            inputData[yCoord][xCoord]=zCoord;
        }
这导致

TypeError: can't convert undefined to object
当我打电话给Firebug的时候

            if (yCoord>=inputData.length) inputData[yCoord]=[];


我认为JavaScript数组可以通过将值分配给高于当前大小的索引来动态调整大小。

当它们存在时,可以动态调整大小。JavaScript中没有2D数组这样的东西。您在初始化中创建的是一个一维数组,第一个元素中有一个数组

在第二个维度中添加内容之前,您所要做的就是检查第一个维度。你现在几乎要这么做了,所以这只是一个小小的改变:

if (inputData[yCoord] == null) inputData[yuCoord] = [];
您必须这样做,而不仅仅是检查长度,因为如果“yCoord”最初是3,那么在初始化位置3之后,位置0、1和2仍然是空的。随后,“yCoord”值2将使长度检查失败,但插槽仍然是空的

或者,您可以这样做:

for (var yplus = inputData.length; yplus <= yCoord; inputData[yplus++] = []);

for(var-yplus=inputData.length;yplus当它们存在时,可以动态调整大小。JavaScript中没有2D数组。在初始化中创建的是一个1D数组,第一个元素中有一个数组

在第二维度中添加内容之前,您只需检查第一维度。现在您几乎可以这样做了,所以这只是一个小改动:

if (inputData[yCoord] == null) inputData[yuCoord] = [];
您必须这样做,而不仅仅是检查长度,因为如果“yCoord”最初是3,那么在初始化位置3后,位置0、1和2仍将为空。随后,“yCoord”值2将无法通过长度检查,但插槽仍然为空

或者,您可以这样做:

for (var yplus = inputData.length; yplus <= yCoord; inputData[yplus++] = []);

for(var-yplus=inputData.length;yplus有效!非常感谢!我也能理解你对问题的解释。我会在可能的时候接受答案。这很有效!非常感谢!我也能理解你对问题的解释。我会在可能的时候接受答案。