JS数组通过id查找对应对象时返回全部数据的解决方法
问题原因及修复方法
你的代码匹配失败核心是类型不匹配问题:
- 数组内元素的
id字段是数字类型(比如目标项的id值是数值4),但你在find的判断条件里用了字符串'4'做===严格相等比较。严格相等运算符不会做隐式类型转换,4 === '4'的判定结果永远是false,自然无法匹配到目标项。 - 额外排查点:你代码中调用
find的变量写的是myDat,请确认存储目标数组的变量名确实为该值,避免因变量名写错引用了其他全量数据,导致返回不符合预期的结果。
正确实现代码
// 比较时保持类型一致,直接用数字4匹配 const item = myData.find(item => item.id === 4); console.log(item); // 输出:{ item: {Name: "Name2", working: true, extra: {active: true}}, id: 4 }
如果你拿到的目标id本身是字符串格式(比如从URL参数、表单输入获取的值),可以先转成数字再比较:
const targetId = '4'; // 字符串格式的目标id const item = myData.find(item => item.id === Number(targetId));
注意:不要随意把
===换成==来解决类型问题,双等的隐式转换规则容易埋下其他类型判断的隐患,统一类型后再比较是更稳妥的写法。
内容的提问来源于stack exchange,提问作者Wain2021
相关产品推荐
相关产品推荐

