我正在尝试使用include来查看对象是否在数组内,如下所示:
arr=[{name:'Dan',id:2}]
我想这样检查:
arr.includes({name:'Dan',id:2})
这返回false,有没有办法做到这一点?
答案 0 :(得分:4)
包括对象数组吗?
是-如果使用相同对象作为数组中includes
的参数,则使用
const obj = {name: "Dan", id: 2};
const arr = [{name: "T.J.", id: 42}, obj, {name: "Joe", id: 3}];
console.log(arr.includes(obj)); // true
console.log(arr.includes({name: "Dan", id: 2})); // false
includes
使用===
检查,并且o1 === o2
仅在o1
和o2
引用相同时才为真。宾语。在您的示例中,您使用的是两个不同但等效的对象。
对于您的用例,您可能需要some
,它使您可以执行回调以确定数组中的条目是否符合条件:
if (arr.some(e => e.id === 2)) {
示例:
const obj = {name: "Dan", id: 2};
const arr = [{name: "T.J.", id: 42}, obj, {name: "Joe", id: 3}];
console.log(arr.some(obj => obj.id === 2)); // true
有多种旋转方式,具体取决于您希望检查的内容(在this question's answers中进行了详细讨论),但这仅意味着调整您传递的功能{{1} }。
答案 1 :(得分:2)
不是那样。请改用{
"id" : "01",
"title" : "Title"
}
:
some
检查其中是否有arr.some(obj => obj.id === 2)
等于id
的对象。
如果您同时检查2
和id
,则:
name
答案 2 :(得分:2)
数组确实具有includes()
函数,但是对于您而言,您必须使用F5
:
some()