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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:07:24