JavaScript矩阵赋值报错:TypeError无法设置未定义属性
解决二维数组赋值时的TypeError问题
你遇到的报错原因很明确:let sortedPieces=[[]]只初始化了索引为0的第一行空数组,索引为1的第二行根本不存在,访问sortedPieces[1]得到的是undefined,自然无法给undefined[0]设置属性。
下面是几种可行的解决方法:
提前初始化所有行
如果你明确知道需要的行数,直接在声明时初始化对应数量的空数组:// 比如需要3行,就初始化3个空数组 let sortedPieces = [[], [], []]; // 之后即可正常赋值 sortedPieces[1][0] = [1,2];赋值前动态创建行
如果不确定行数,每次赋值前先检查目标行是否存在,不存在则先创建空数组:// 假设要给第i行第j列赋值 const targetRow = 1; const targetCol = 0; // 检查目标行是否存在,不存在则创建 if (!sortedPieces[targetRow]) { sortedPieces[targetRow] = []; } // 现在可以正常赋值 sortedPieces[targetRow][targetCol] = [1,2];直接初始化目标矩阵
如果已经明确最终的矩阵结构,直接完整初始化更高效:let sortedPieces = [ [[1,2],[2,3],[3,4],[4,5]], [[1,2],[2,3],[3,4],[4,5]], [[1,2],[2,3],[3,4],[4,5]] ];
内容的提问来源于stack exchange,提问作者Ariadna Natsuki
相关产品推荐
相关产品推荐

