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

JavaScript中如何检查数组为undefined并返回对应错误信息?

报错原因

你遇到的TypeError: Cannot read properties of undefined (reading 'release_dates')是因为Array.find()在没有匹配到符合条件的元素时会返回undefined,当movieRating里不存在iso_3166_1 === 'US'的条目时,findUSRating值为undefined,直接访问它的release_dates属性就会触发报错。
除此之外你的代码还有两个问题:

  • 没有对rating.results、findUSRating.release_dates这类可能为undefined的属性做空值兜底,任意一个字段缺失都会触发同类报错
  • 三元判断里的array[index]属于无效判断,代码中从未定义过index变量,属于冗余逻辑
修复后代码

在每一步可能返回空值的链路加默认兜底即可,不需要额外的复杂判断:

// 给results加空数组兜底,避免results不存在时调用find方法报错
const movieRating = rating.results ?? [];

// 匹配US地区分级条目,匹配不到时用空对象兜底
const findUSRating = movieRating.find((item) => item.iso_3166_1 === 'US') ?? {};

// 给release_dates加空数组兜底,过滤掉certification为空的无效条目
const validCertifications = (findUSRating.release_dates ?? []).filter((item) => item.certification);

// 有效分级数组长度大于0时取第一个分级,否则返回指定错误提示
console.log(
  validCertifications.length ? validCertifications[0].certification : "No Certification Available For This Movie"
);
说明

代码中使用的??是空值合并运算符,仅在左侧值为null或undefined时触发右侧的默认值,不会误把0、空字符串这类合法假值判定为需要兜底的场景。如果需要兼容IE等不支持??的老旧环境,可以把所有??替换为||实现相同效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:21:07