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

JS过滤数组时报Cannot read properties of undefined (reading 'items')如何修复

错误原因

  1. 语法错误:a.["1"]属于非法语法,JavaScript中访问对象属性时,点运算符和方括号运算符不能同时叠加使用。如果属性名是数字、包含特殊字符或者是变量,直接使用方括号写法a["1"]即可。
  2. 边界场景未兼容:如果数组中存在部分项没有"1"属性,或者"1"属性下不存在items,直接链式访问会触发读取undefined属性的报错。

修复方案

方案1(现代JS环境,推荐)

使用可选链运算符处理空值兼容,同时修正语法错误:

const filterResult = data.filter(
  (a) => a?.["1"]?.items?.Part1 === true
);

说明:

  • 去掉a与["1"]之间多余的.,修复语法问题
  • ?.可选链会在链路中某一层值为undefined/null时直接终止返回undefined,不会抛出报错,不符合要求的项会被自动过滤
  • 使用严格相等===替代==,避免隐式类型转换导致的逻辑异常

方案2(兼容旧环境)

如果运行环境不支持ES2020的可选链特性,用逐层判空的写法实现同等效果:

const filterResult = data.filter(
  (a) => a["1"] && a["1"].items && a["1"].items.Part1 === true
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:27:02