Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查数组中是否存在对象_Javascript - Fatal编程技术网

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它没有。