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

数组语句出现Uncaught TypeError,空数组时报错如何解决?

解决空数组场景下的TypeError问题

错误原因

当ovens_init[i]是空数组时,ovens_init[i][0]的值为undefined,此时尝试读取undefined的length属性就会抛出Uncaught TypeError: Cannot read properties of undefined (reading 'length')。

修复方案

你可以在读取length前先检查ovens_init[i][0]是否存在,或者使用可选链操作符简化判断,以下是两种可行的修改方式:

方式1:添加存在性判断(兼容所有JS环境)

//Initial Array for ovens
var ovens_init = new Array();
ovens_init[1] = [];
ovens_init[2] = [];
ovens_init[3] = [];
ovens_init[4] = [];
ovens_init[5] = [];


//Figures out the max length of the inital arrays
var oven_max_length = 0;
for (i = 1; i < 6; i++){
  // 先判断子数组的第一个元素是否存在,再比较长度
  if(ovens_init[i][0] && ovens_init[i][0].length > oven_max_length){
    oven_max_length = ovens_init[i][0].length;
  }
}

方式2:使用可选链操作符(ES2020及以上环境支持)

可选链操作符?.会在左侧值为undefined或null时直接返回undefined,配合|| 0可以将不存在的情况转为0,避免报错:

//Initial Array for ovens
var ovens_init = new Array();
ovens_init[1] = [];
ovens_init[2] = [];
ovens_init[3] = [];
ovens_init[4] = [];
ovens_init[5] = [];


//Figures out the max length of the inital arrays
var oven_max_length = 0;
for (i = 1; i < 6; i++){
  const currentLength = ovens_init[i][0]?.length || 0;
  if(currentLength > oven_max_length){
    oven_max_length = currentLength;
  }
}

说明

两种方案都能确保当子数组为空时,不会触发读取undefined属性的错误,程序可以正常运行并计算出正确的最大长度(空数组场景下最大长度为0)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:25:05