Javascript 检查一个数组是否包含一个使用一个键的对象

Javascript 检查一个数组是否包含一个使用一个键的对象,javascript,arrays,Javascript,Arrays,我有一个数组,像这样: 让myarr=[ {类型:“a”,类:“x”,值:“p”}, {类型:“b”,类:“x”,值:“r”}, {类型:“a”,类:“y”,值:“p”} ]; 我需要使用Array.includes来检查class=y的对象是否在此数组中 我需要用myarr.includes({condition})检查它 我可以简单地比较整个对象,但我不知道如何使用对象的键进行检查 要做到这一点,您可以使用以下方法 some()方法测试数组中是否至少有一个元素通过了所提供函数实现的测试

我有一个数组,像这样:

让myarr=[
{类型:“a”,类:“x”,值:“p”},
{类型:“b”,类:“x”,值:“r”},
{类型:“a”,类:“y”,值:“p”}
];
我需要使用
Array.includes
来检查
class=y
的对象是否在此数组中

我需要用
myarr.includes({condition})检查它


我可以简单地比较整个对象,但我不知道如何使用对象的键进行检查

要做到这一点,您可以使用以下方法

some()方法测试数组中是否至少有一个元素通过了所提供函数实现的测试

让myarr=[
{类型:“a”,类:“x”,值:“p”},
{类型:“b”,类:“x”,值:“r”},
{类型:“a”,类:“y”,值:“p”}
];
let pass=myarr.some(item=>item.class='y');
让fail=myarr.some(item=>item.class='z');
控制台日志(pass);

控制台日志(失败)要执行此操作,可以使用该方法

some()方法测试数组中是否至少有一个元素通过了所提供函数实现的测试

让myarr=[
{类型:“a”,类:“x”,值:“p”},
{类型:“b”,类:“x”,值:“r”},
{类型:“a”,类:“y”,值:“p”}
];
let pass=myarr.some(item=>item.class='y');
让fail=myarr.some(item=>item.class='z');
控制台日志(pass);

控制台日志(失败)
Array.prototype.includes
依赖身份检查,身份检查要求您传入相同的对象(不仅是具有相同属性的对象,它还需要相同的引用,以便
objA===objB
)。您需要一个函数,该函数允许您提供一个可以检查条件的函数。幸运的是,这里有
Array.prototype

myarr.some(item => item.class === 'y')

Array.prototype.includes
依赖身份检查,身份检查要求您传入相同的对象(不仅是具有相同属性的对象,它还需要相同的引用,以便
objA===objB
)。您需要一个函数,该函数允许您提供一个可以检查条件的函数。幸运的是,这里有
Array.prototype

myarr.some(item => item.class === 'y')
我使用lodash.includes()或.has()方法来处理以下内容:

_.includes({ 'a': 1, 'b': 2 }, 1);

您也可以使用普通的js映射、某些方法或其他方法来实现这一点。

我使用lodash.includes()或.has()方法来实现以下内容:

_.includes({ 'a': 1, 'b': 2 }, 1);


您也可以使用简单的js映射、某些方法或其他方法来实现这一点。

您可以使用
Array#some
,也可以利用适当的数据结构

数组#一些
const myArr=[{
类型:“a”,
类别:“x”,
值:“p”
},
{
类型:“b”,
类别:“x”,
值:“r”
},
{
类型:“a”,
班级:“y”,
值:“p”
}
]
const hasClassY=myArr.some(o=>o.class=='y')

console.log(hasClassY)
您可以使用
数组#一些
,也可以利用适当的数据结构

数组#一些
const myArr=[{
类型:“a”,
类别:“x”,
值:“p”
},
{
类型:“b”,
类别:“x”,
值:“r”
},
{
类型:“a”,
班级:“y”,
值:“p”
}
]
const hasClassY=myArr.some(o=>o.class=='y')
console.log(hasClassY)
您可以使用或,但不实用,在这种情况下作为通用解决方案不有用,请参见以下内容:

让myarr=[
{类型:“a”,类:“x”,值:“p”},
{类型:“b”,类:“x”,值:“r”},
{类型:“a”,类:“y”,值:“p”}
];
//String.includes-我们需要精确匹配,这可能导致错误
var value1=JSON.stringify(myarr).includes('class:'x');
//Array.includes-没关系,但它有两次迭代,而不是像some()那样一次迭代
var value2=myarr.map(o=>o.class)。包括(“x”)
console.log(值1)
console.log(value2)
您可以使用或,但不实用,在这种情况下作为一般解决方案不有用,请参见以下内容:

让myarr=[
{类型:“a”,类:“x”,值:“p”},
{类型:“b”,类:“x”,值:“r”},
{类型:“a”,类:“y”,值:“p”}
];
//String.includes-我们需要精确匹配,这可能导致错误
var value1=JSON.stringify(myarr).includes('class:'x');
//Array.includes-没关系,但它有两次迭代,而不是像some()那样一次迭代
var value2=myarr.map(o=>o.class)。包括(“x”)
console.log(值1)

console.log(value2)
试试这个简单的解决方案

让myarr=[
{类型:“a”,类:“x”,值:“p”},
{类型:“b”,类:“x”,值:“r”},
{类型:“a”,类:“y”,值:“p”}
];

log(myarr.some(函数(元素){return element[“class”]==“x”;}))
试试这个简单的解决方案

让myarr=[
{类型:“a”,类:“x”,值:“p”},
{类型:“b”,类:“x”,值:“r”},
{类型:“a”,类:“y”,值:“p”}
];

log(myarr.some(function(element){return element[“class”]==“x”;}))
它不能与
includes一起使用。你需要一种不同的方法。为什么要使用.includes()?这是一项要求吗?为什么需要用
myarr.includes
检查它?对于作业
myarr.some(x=>x.class='y')
,这不是正确的方法。它不适用于
includes
。你需要一种不同的方法。为什么要使用.includes()?这是一项要求吗?为什么需要用
myarr.includes
检查它?对于作业
myarr.some(x=>x.class='y')
,这不是正确的方法。通常,除非OP另有规定,否则最好避免在答案中使用库。改进这个答案的一个好方法是承认
some()
,然后在事后添加lodash作为建议。@AndrewBone ye,我理解,但知道这一点仍然没有错,你可以用lodash快速完成。因为有时候你通常有“2分钟”(而不是2小时寻找简单的js解决方案)来推动更改:),除非