如何使用JavaScript查找对象数组中匹配指定字段的目标元素
错误原因
你写的代码存在几个问题,对应报错和结果不符合预期的原因如下:
- 混淆了数组方法的适用场景:
map作用是遍历数组生成等长的新数组,你需要的是匹配单个符合条件的元素,不需要使用map find是数组专属方法,你在map的回调里拿到的item是数组里的单个对象,本身不是数组,调用item.find自然会触发类型错误- 匹配值书写错误:你要筛选的是
category为'two'的元素,代码里写的是'2',匹配规则不匹配 - 语法存在遗漏:
map的回调括号、调用括号没有正确闭合
修复后的代码
直接对items数组调用find方法找到匹配的对象,再取对应的id字段即可:
// 先匹配category为two的元素 const target = items.find(item => item.category === 'two'); // 兼容找不到元素的场景,避免报错 const id = target ? target.id : null; console.log(id); // 输出 '2'
如果你确定数组中一定存在符合条件的元素,可以简化为一行写法:
const id = items.find(item => item.category === 'two').id;
扩展场景
如果存在多个符合条件的元素,需要收集所有对应id,可以用filter+map组合实现:
const idList = items .filter(item => item.category === 'two') .map(item => item.id);
内容的提问来源于stack exchange,提问作者stackuser
相关产品推荐
相关产品推荐

