包括与对象数组一起使用的作品吗?

时间:2018-12-12 17:45:51

标签: javascript arrays object

我正在尝试使用include来查看对象是否在数组内,如下所示:

arr=[{name:'Dan',id:2}]

我想这样检查:

arr.includes({name:'Dan',id:2})

这返回false,有没有办法做到这一点?

3 个答案:

答案 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仅在o1o2引用相同时才为真。宾语。在您的示例中,您使用的是两个不同但等效的对象。

对于您的用例,您可能需要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的对象。

如果您同时检查2id,则:

name

答案 2 :(得分:2)

数组确实具有includes()函数,但是对于您而言,您必须使用F5

some()