"类型错误:can't将未定义转换为对象“t”;当动态调整2D阵列的大小时
"TypeError: can't convert undefined to object" when Dynamically Resizing 2D Array
我想将一些文本读取到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]=[];
或
inputData[yCoord][xCoord]=zCoord;
我认为可以通过为高于当前大小的索引分配值来动态调整JavaScript数组的大小。
当它们存在时,可以动态调整它们的大小。JavaScript中没有2D数组。您在初始化中创建的是一个1D数组,第一个元素中有一个数组。
您所要做的就是在向第二个维度添加内容之前先检查第一个维度。你现在几乎要这么做了,所以这是一个小变化:
if (inputData[yCoord] == null) inputData[yuCoord] = [];
你必须这样做,而不仅仅是检查长度,因为如果"yCoord"最初是3,那么在初始化位置3后,位置0、1和2仍然为空。随后,值为2的"yCoord"将无法通过长度检查,但插槽仍然是空的。
或者,你可以这样做:
for (var yplus = inputData.length; yplus <= yCoord; inputData[yplus++] = []);
相关文章:
- 使用JavaScript根据窗口/视口的高度动态调整图像大小
- 如何动态调整文本大小以适应元素以防止拉伸
- 根据容器 DIV 中的图像动态调整容器 DIV 的大小
- 如何在浏览器宽度/高度变化时动态调整图像网格的大小
- 如何根据浏览器宽度动态调整 css 样式表
- 如何在使用react时动态调整元素大小
- 如何在OpenLayers中的Heatmap.js中动态调整缩放
- 为什么这块画布一直在生长?(动态调整画布大小)
- 使用javascript动态调整CSS
- 使用HTML或CSS动态调整徽标大小
- 如何使用chrome应用程序窗口动态调整文本区域的大小
- 使用jQuery对图像进行居中和动态调整大小时出现问题
- 如何在jquerycycle2嵌套幻灯片中防止幻灯片重叠并确保动态调整容器大小
- 在跨域站点中动态调整iframe的大小
- 使用 javascript/jquery 动态调整画布窗口的大小
- 根据提交单击动态调整 iFrame 的高度
- 如何在java中保留插入顺序,恒定时间检索和动态调整大小
- 如何在 BorderContainer (dojo) 中动态调整 ContentPane 的大小
- 动态调整 Chrome 扩展程序弹出窗口高度的大小
- 用于动态调整菜单大小的 scrollTop 函数