Javascript 检查数组中是否存在对象
我有以下数组,Javascript 检查数组中是否存在对象,javascript,Javascript,我有以下数组,myArray和对象,myObject。有没有办法确定myArray中是否存在myObject const myArray = [ { id: 1, lastName: "Garland", firstName: "Darius", email: "test@example.com" }, { id: 2, lastName: "Sexton", firstName:
myArray
和对象,myObject
。有没有办法确定myArray
中是否存在myObject
const myArray = [ { id: 1, lastName: "Garland", firstName: "Darius", email: "test@example.com" },
{ id: 2, lastName: "Sexton", firstName: "Collin", email: "fake@example.com" } ]
const myObject = { lastName: "Sexton", email: "fake@example.com" }
您可以使用
some
和every
来获得所需的输出
constmyarray=[{id:1,姓氏:“Garland”,姓氏:“Darius”,电子邮件:test@example.com},{id:2,姓:“塞克斯顿”,名:“科林”,电子邮件:fake@example.com" } ];
const myObject={lastName:“Sexton”,电子邮件:fake@example.com" };
const result=myArray.some(k=>Object.entries(myObject).every([key,v])=>k[key]==v));
constresult2=myArray.some(k=>Object.entries(k).every([key,v])=>myObject[key]==v));
控制台日志(结果);
console.log(result2)代码>使用数组的“indexOf”方法!如果未找到所需元素,则返回“-1”。
您还可以像下面这样使用数组的“includes”方法:
var nums=[1,2]
控制台日志(nums.includes(1))//返回true,与gorak相同,但使用显式泛型函数完成
const objpartsexistinar=(obj,arr)=>arr.some(o=>Object.entries(obj.every)([k,v])=>o[k]==v))
const fullobjexistinar=(obj,arr)=>arr.some(o=>Object.entries(o.every)([k,v])=>obj[k]==v))
常量myArray=
[{id:1,姓:'Garland',名:'Darius',电子邮件:'test@example.com' }
,{id:2,姓:'Sexton',名:'Collin',电子邮件:'fake@example.com' }
]
const myObjP={lastName:'Sexton',电子邮件:'fake@example.com' }
const myObjF={id:2,lastName:'Sexton',firstName:'Collin',email:'fake@example.com' }
log('objpartsexsistinar->',objpartsexsistinar(myObjP,myArray))
console.log('fullobjexistinar->',fullobjexistinar(myObjF,myArray))
t这不可能是,它们是两个具有两个不同内存地址的对象myArray.includes(myObject)
。不过,对象是通过引用进行比较的,给定您显示的代码,它将始终为false
。此外,即使JS要按对象内容进行比较,数组中也不包含任何对象。我建议您重新检查您的问题,如果数组包含MyObject的所有对象属性都被定义并保持与MyObject Do相同的值的对象。@ NoCLIST在您的示例中,您认为<代码> MyObjult<代码>存在于<代码> MyReals中吗?对象是通过引用而不是通过值来比较的。因此,你的答案只有在OP要求的是准确的情况下才有效——我们无法知道,因为他们的问题缺乏关于他们何时期望true和false的关键信息。有一个泛型函数不是更好的主意吗?现在,如果myObject
具有“对应”的属性该怎么办数组中的对象没有?@connexo它没有。