JavaScript中使用find方法实现按id查找功能失效,问题出在哪里?
问题原因
你写的Array.find()回调函数没有返回判断结果,导致匹配逻辑完全不生效。
Array.find()要求回调函数返回布尔值,用来判断当前遍历项是否是目标元素:
- 如果你使用带大括号
{}的箭头函数写法,必须手动通过return语句返回判断结果 - 你当前的代码里只写了
item.id === id判断表达式,没有加return,回调每次默认返回undefined,会被find判定为false,所以永远找不到匹配的元素,最终返回undefined。
修复方案
有两种正确写法可选:
方案1:使用箭头函数简写(自动返回表达式结果)
getItemById: function (id) { let item = data.items.find(item => item.id === id); return item; }
方案2:保留大括号,手动加return
getItemById: function (id) { let item = data.items.find(item => { return item.id === id; }); return item; }
修复后的find版本性能比forEach更好:find找到第一个匹配项就会停止遍历,不需要遍历整个数组。
内容的提问来源于stack exchange,提问作者venndi
相关产品推荐
相关产品推荐

