You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

报错TypeError: Cannot set properties of undefined (setting '0'):为何无法为rotatedArr赋值

错误原因与修复方案

错误原因

你遇到的TypeError是因为**rotatedArr初始是空数组,外层循环中每次访问rotatedArr[i]时,这个位置的元素还未被初始化,属于undefined**。当你试图给undefined的下标属性(比如rotatedArr[i][k])赋值时,JS不允许操作undefined的属性,所以抛出了这个错误。

举个直观的例子:第一次循环i=0时,rotatedArr[0]根本不存在,是undefined,这时候执行rotatedArr[0][0] = ...,本质是在给undefined的0属性赋值,这显然不合法。

修复代码

只需要在外层循环里,先给rotatedArr[i]初始化一个空数组,再进行内层赋值操作即可,另外别忘了返回旋转后的数组:

var rotate = function(matrix) {
    let rotatedArr = [];
    for(let i=0; i<matrix.length; i++){
        // 先初始化当前行的空数组
        rotatedArr[i] = [];
        for(let k=0; k<matrix.length; k++){
             rotatedArr[i][k] = matrix[matrix.length-1-k][i]
        }
    }
    return rotatedArr;
}; 

补充说明

如果是N*N的方阵,这个修复完全适用;如果是不规则矩阵,还需要根据matrix[i].length调整内层循环的长度,但你的代码默认处理方阵场景,所以上面的修复足够。

内容的提问来源于stack exchange,提问作者Aniket Ingawale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:03:21