JavaScript代码调用toLowerCase时触发「无法读取undefined属性」错误求助
错误原因排查
1. 数组keys定义错误
你把keys写成了单个字符串元素["type, name"],遍历的时候会用"type, name"作为键去访问item的属性,而totalCar里的对象不存在这个复合键,导致item[key]返回undefined,调用toLowerCase()自然触发报错。
2. 未处理属性值为空的情况
就算keys定义正确,若totalCar里的某个对象缺少type或name属性,或者属性值为null/undefined,调用toLowerCase()也会触发同样的错误。
解决方法
第一步:修正keys数组
把单个字符串拆成两个独立元素:
const keys = ["type", "name"]
第二步:添加空值保护
在调用toLowerCase()前,先确保属性值存在且是字符串类型,推荐用可选链操作符结合空值合并操作符处理:
const keys = ["type", "name"] const search = () => { return totalCar.filter((item) => keys.some((key) => (item[key]?.toLowerCase() ?? "").includes(query) )); };
如果运行环境不支持ES2020+语法,用兼容的判断方式:
const keys = ["type", "name"] const search = () => { return totalCar.filter((item) => keys.some((key) => { const value = item[key]; return typeof value === 'string' && value.toLowerCase().includes(query); })); };
内容的提问来源于stack exchange,提问作者Hakim Lord
相关产品推荐
相关产品推荐

