使用ES6 .find方法查询id=3的记录报错,求原因及解决
问题排查与解决
嘿,我来帮你理清为啥用find()方法会报错~
核心问题有两个:
- 数据格式不合法:你给出的不是一个可操作的数组,而是多个独立对象直接罗列在一起,而且还有语法错误——第二个对象
{id:7,title:'Laundry & Househo,}里,title的单引号没闭合,逗号还错放到了字符串内部,这会直接导致JS解析失败。 find()方法的调用对象错误:find()是数组的原型方法,只能在数组上调用。如果你的categories不是数组(比如是单个对象、或者未正确定义),调用find()就会抛出类似Uncaught TypeError: categories.find is not a function的错误。
修正后的完整代码
首先把数据整理成合法的数组,修复语法错误:
// 先定义正确的分类数组 const categories = [ {id:10,title:'Dairy & Eggs'}, {id:7,title:'Laundry & Household'}, // 修复引号和拼写问题 {id:9,title:'Bakery'}, {id:8,title:'Fresh Food'}, {id:4,title:'Frozen Food'}, {id:6,title:'Health & Beauty'}, {id:3,title:'Food Cupboard'}, {id:5,title:'Drinks'}, {id:2,title:'Chilled Food'} ];
然后使用find()方法查找目标记录:
// 用箭头函数简化写法,也可以保留你原来的普通函数写法 const category = categories.find(category => category.id === 3); console.log(category); // 输出结果:{id: 3, title: 'Food Cupboard'}
额外检查点
如果还是报错,可以确认下:
categories变量是否真的被正确定义为数组,有没有在代码其他地方被意外重写- 运行环境是否支持ES6语法(现在主流浏览器/Node.js版本都支持,除非是非常老旧的环境)
内容的提问来源于stack exchange,提问作者Benjamin
相关产品推荐
相关产品推荐

