如何在JavaScript中判断user.id是否存在于对象数组中?
解决对象数组中检测指定ID用户是否存在的问题
你的代码存在两个关键问题:
id=1是赋值操作,不是匹配条件,这里应该直接传入要检测的ID值(比如2)Array.includes()会严格匹配数组中的完整元素,而你的数组元素是对象,不是单个数字ID,所以永远无法匹配成功
正确实现方式
推荐使用 Array.some() 方法,它会遍历数组,只要有一个元素满足条件就返回true,非常适合这类存在性检测:
const targetId = 2; // 要检测的目标ID if (res.data.followers.some(user => user.id === targetId)) { setIsFollow(true); console.log("user exists"); }
也可以用 Array.find() 实现,找到匹配对象则返回该对象,否则返回undefined,同样能用于判断:
const targetId = 2; const foundUser = res.data.followers.find(user => user.id === targetId); if (foundUser) { setIsFollow(true); console.log("user exists"); }
原代码失效原因说明
原代码里的 includes(id=1) 实际是先把变量id赋值为1,再检查数组中是否存在数字1,但你的数组元素都是{id: x, username: ...}格式的对象,自然找不到匹配项。
内容的提问来源于stack exchange,提问作者Destiny Franks
相关产品推荐
相关产品推荐

