如何计算 JavaScript 数组对象?

front end technologyjavascriptweb development

在本教程中,我们将学习计算 JavaScript 数组对象数组是 JavaScript 中包含字符串数字对象等的数据结构。对象是一种包含与其相关的属性和方法的实体。我们可以访问对象的属性并使用对象的引用调用对象方法。

通常,要查找数组长度,我们可以使用 array.length() 方法,它返回数组包含的元素总数。但是如果我们只需要计算对象元素的数量怎么办?

本教程提供了多种方法来计算 JavaScript 数组中对象元素的总数。

  • 使用 for 循环和 instanceof 运算符

  • 使用 array.filter() 方法

使用 for 循环和 instanceof 运算符

在此方法中,我们将使用 for 循环来计算数组中的对象总数。用户可以遍历数组的每个元素,并使用 instanceof 运算符检查每个元素的类型。他们可以用 0 初始化长度变量以存储对象总数。在迭代数组元素时,如果发现任何对象类型的实体,则可以将长度增加 1。

语法

用户可以使用以下语法使用 for 循环和 instanceof 运算符来计数数组对象。

let objectsLen = 0;
for (let i = 0; i < myArr.length; i++) {

   // 如果实体是对象,则将objectsLen增加1,即存储数组中的对象总数。
   if (myArr[i] instanceof Object) {
      objectsLen++;
   }
}

算法

  • 步骤 1 - 创建一个名为objectsLen的变量并用0初始化它。

  • 步骤 2 - 创建一个数组并添加一些带有其他元素的对象。

  • 步骤 3 - 要计算数组中的对象数,我们使用 for 循环遍历数组并使用 instanceof 运算符检查元素类型

  • 步骤 4 - 如果找到对象类型的实体,我们将向objectsLen变量添加1。

  • 步骤 5 - 最后,我们将打印objectsLen变量,即对象的总数。

示例

在下面的示例中,计算数组中的对象。我们使用 for 循环遍历数组并应用 instanceof 运算符来检查数组元素的类型。

<html>
   <head>
   </head>
   <body>
      <h2> Count JavaScript array objects. </h2>
      <h4> Counting total number of array objects in array using the <i> for loop. </i> </h4>
      <p id = "objects"> </p>
      <script>
         let objects = document.getElementById("objects");
         var objectsLen = 0;
         
        // 对象和其他元素的数组
        var myArr = [{ "id": 1, "int": 10 }, { "id": 2, "int": 20 }, { "id": 3, "int": 30 }, "TutorialsPoint", 20, "Hello"];
        for (let i = 0; i < myArr.length; i++) {
           // 检查对象的类型。
           if ( myArr[i] instanceof Object ) {
               objectsLen++;
           }
       }
       objects.innerHTML += "Original Array: " + JSON.stringify(myArr)+"<br>";
       objects.innerHTML += "<br>Total number of objects: " +  objectsLen ;
   </script>
   </body>
</html>

使用 array.filter() 方法

在 JavaScript 中,array.filter() 方法用于过滤数组的元素。用户可以将回调函数添加到方法中,并在回调函数中添加一些过滤条件。在我们的例子中,过滤所有对象的过滤条件是检查元素类型。用户可以使用 typeof 运算符检查对象的类型,如果实体是对象类型,则从回调函数返回 true。否则,返回 false。

array.filter() 方法返回所有过滤值的数组。因此,我们将获得所有对象的数组,并且可以使用 .length() 方法测量其长度。

语法

用户可以按照以下语法使用 array.filter() 方法计算对象的数量。

// 过滤所有类型为对象的实体
let allObject = array.filter((val) => {

	// 使用 typeof 运算符检查元素的类型。
   if ( typeofval == 'object' ) {
      return true;
   } else {
		return false;
   }
});
LettotalObjects = allObject.length;

参数

  • array − 它是一个元素数组,包含对象的实体和其他元素。

  • val − 它是数组的一个元素,用户想要检查其类型,如果实体是对象,则对其进行过滤。

示例

在下面的示例中,我们使用了 array.filter() 方法从给定数组中过滤所有对象。最后,我们计算了对象数组的长度,该长度由 array.filter() 方法返回。

<html>
   <body>
   <h2> Count JavaScript array objects. </h2>
   <h4> Counting total number of array objects in array using the <i> arrays.filter() </i> method. </h4>
   <p id = "objects"> </p>
   <script>
      let objects = document.getElementById("objects");
      
      // 对象和其他元素的数组 
      var array = ["TutorialsPoint", 20, { "id": 2, "int": 20 }, { "id": 3, "int": 30 }, "Hello"];
      let allObject = array.filter((val) => {
         if ( typeof val == 'object' ) {
            return true;
         } else {
            return false;
         }
      });
       let objectsLen = allObject.length;
       objects.innerHTML += "Original String: " + JSON.stringify(array) + " <br> ";
       objects.innerHTML += "<br>Total Objects in the array: "  + objectsLen 
   </script>
   </body>
</html>

用户已经学会了计算 JavaScript 数组中的对象实体。第一种方法和第二种方法具有相同的时间复杂度。当我们查看这两种方法的空间复杂度时,第一种方法的空间复杂度较低,并且优化得更好。


相关文章