Javascript 检查对象数组是否包含其他对象

Javascript 检查对象数组是否包含其他对象,javascript,Javascript,我有以下代码: const arr=[ {姓名:“比尔”,年龄:11}, {姓名:“比尔”,年龄:11} ] log(arr.includes({name:“Bill”,age:11}))该includes()方法通过引用而不是值来比较对象。在您的例子中,三个对象有三个不同的引用,尽管它们具有相同的属性和相同的值 constbill={name:'bill',年龄:11} const arr=[bill,{姓名:'Jane',年龄:18}] arr.includes(bill)//true(同

我有以下代码:

const arr=[
{姓名:“比尔”,年龄:11},
{姓名:“比尔”,年龄:11}
]
log(arr.includes({name:“Bill”,age:11}))
includes()
方法通过引用而不是值来比较对象。在您的例子中,三个对象有三个不同的引用,尽管它们具有相同的属性和相同的值

constbill={name:'bill',年龄:11}
const arr=[bill,{姓名:'Jane',年龄:18}]
arr.includes(bill)//true(同一引用)
arr.includes({name:'Bill',age:11})//false(不同的引用)
如果要按值查找对象,可以使用
find()
方法并传递一个筛选函数,该函数将检查对象的每个属性是否符合您的条件

const arr=[{name:“Bill”,年龄:11},{name:“Jane”,年龄:18}]
const exists=Boolean(arr.find(x=>x.name=='Bill'&&x.age==11))
//或者更简单地使用'some()'方法
const exists=arr.some(x=>x.name=='Bill'&&x.age==11)

您可以为此创建自定义数组原型方法,如
includesObj

const arr=[
{姓名:“比尔”,年龄:11},
{姓名:“比尔”,年龄:11}
]
Array.prototype.includesObj=函数(obj){
for(设i=0;ilog(arr.includesObj({name:“Bob”,age:11}))
您可以将一个对象与其他对象进行比较。它们有所有不同的对象引用。这可以帮助@NinaScholz,解决方案是什么?您能演示一下吗?没有内置的方法来检查对象的相等性,因为比较是通过引用完成的(两个对象可以有不同的引用,即使它们具有相同的内容)。我建议您逐个键进行比较,或者使用类似的库方法。将
Boolean()
Array.find()
组合起来的另一种方法就是使用。谢谢您提醒我这个方法。我已经把它添加到了示例中。如果你想让它重新启动,你还需要添加
Object.keys(这个[I]).sort()
Object.keys(obj).sort()
作为
stringify
@RenéDatenschutz的第二个参数确定吗?我在控制台日志中得到两次
true
,但如果不这样做,它将在
console.log(arr.includesObj({age:11,name:“Bill”}))上失败that@RenDatenschutz这是我自己的错别字,很管用