如何在JavaScript中检查数组是否包含对象?


在本教程中,我们将学习如何检查数组是否包含对象。实际数组包含相同数据类型的数值。在JavaScript中,数组被列表取代,列表包含任何数据类型的数值,即使用户可以在列表中添加数字和字符串类型的对象。

因此,程序员有时需要弄清楚数组是否包含对象。如果数组包含对象,程序员可以访问对象的属性并执行某些操作。

这里,我们有不同的方法来检查数组是否包含对象。

  • 使用array.includes()方法

  • 使用array.some()方法

使用array.includes()方法

**Array.includes()** 方法在我们需要检查数组是否包含列表中的特定值时非常有用。我们可以使用此方法查找任何特定的对象实体。我们将把对象作为array.includes() 方法的参数,如果数组包含具有相同键和值的同一对象,则返回true。

语法

用户可以按照以下语法使用array.includes() 方法。

let array = [ "TutorialsPoint", "Hello", object, "World" ];
let result = array.includes( object , starting_position );

参数

array.includes() 方法包含两个参数。

  • object − 这是您想要在数组中查找的对象的实体类型。

  • starting_position − 这是数组中基于0索引的起始位置,用户想要从该位置开始在数组中查找对象。

示例

在下面的示例中,我们创建了一个对象和一个字符串数组。此外,它还在数组中包含了对象。我们使用array.includes() 方法从不同的位置开始查找数组中的对象。

<html>
<head>
   <title>Check if array includes object in JavaScript.</title>
</head>
<body>
   <h3>Check if array includes object in JavaScript.</h3
   <p>Using Array.includes() method to check existence of the object from starting position 1:</p>
   <div id="existance1"></div>
   <p>Using Array.includes() method to check existence of the object from starting position 3:</p>
   <div id="existance2"></div>
   <script>
      let existance1 = document.getElementById("existance1");
      let existance2 = document.getElementById("existance2");
      let object = { "name": "TutorialPoints", "website": "TutorialsPoint.com" };
      let array = [ "TutorialsPoint", "Hello", object, "World" ];
      let result = array.includes(object, 1); // we are checking from the starting position 1 instead of zero.
      existance1.innerHTML = result;
      result = array.includes(object, 3);
      existance2.innerHTML = result;
   </script>
</body>
</html>


在上面的示例代码中,对象的索引位置是2(列表从索引0开始)。如果我们从索引1开始查找对象的位置,我们将找到该对象并返回true。当我们从第3个位置开始查找对象时,它将返回false。

使用array.some()方法

**array.some()** 方法像JavaScript中的forEach循环一样迭代数组的每个元素。它将回调函数作为参数。用户可以在回调函数内定义一些条件应用于每个数组元素。即使条件对于单个元素变为true,它也会返回true。在我们的例子中,我们将检查值的类型,如果它是对象,它将返回true。

语法

array.some() 方法的语法如下所示。

let array = [ "TutorialsPoint", "Hello", object, "World" ]
let result = array.some( function callback(item) {
   // condition of the callback function.
   return typeof item == "object";
});

此外,用户可以在回调函数中使用箭头函数。这里,我们创建了一个具名函数以保持代码的简单性。

参数

array.some() 方法将回调函数作为参数。

  • 回调函数 − 它是一个对每个元素检查某些条件的函数。如果任何单个元素使条件为真,则array.some() 方法返回true。

示例

下面的示例演示了array.some() 方法。我们创建了一个包含对象的数组。我们将迭代数组的每个元素以检查其类型。如果数组包含任何单个实体,其类型为对象,则array.some() 返回true。

<html>
<body>
   <h3>Check if array includes object in JavaScript.</h3>
   <p>Using some() method to check existence of the object in the array:</p>
   <div id="existance1"></div>
   <script>
      let existance1 = document.getElementById("existance1");
      let existance2 = document.getElementById("existance2");
      let obj = { "name": "TutorialPoints", "website": "TutorialsPoint.com" };
      let arr = [ "TutorialsPoint", "Hello", obj, "World" ];
      let result = arr.some( function myfunction(item) {
         // checking the type of every item and if it is object it returns true.
         let boolean = typeof item == "object";
         return boolean;
      });
      existance1.innerHTML = result;
   </script>
</body>
</html>


结论

在本教程中,我们学习了两种检查数组是否包含对象的方法。第一种方法检查数组中是否存在具有相同键值对的对象。第二种方法不是检查具有相同键值对的对象,而是检查对象类型的实体。

但是,JavaScript中还有许多其他方法可以检查数组中对象实体的存在。用户可以使用find() 方法,其工作方式与array.some() 方法类似。此外,array.filter()array.indexOf() 方法也可用于解决本教程中给出的问题。

更新于:2022年7月20日

5K+ 浏览量

启动你的职业生涯

完成课程获得认证

开始学习
广告