如何统计JavaScript数组对象?


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

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

本教程介绍了多种方法来统计JavaScript数组中对象元素的总数。

  • 使用for循环和instanceof运算符

  • 使用array.filter()方法

使用for循环和instanceof运算符

在这种方法中,我们将使用for循环来统计数组中对象的总数。用户可以迭代数组的每个元素,并使用instanceof运算符检查每个元素的类型。他们可以将length变量初始化为0,以存储对象的总数。在迭代数组元素时,如果他们找到任何对象类型的实体,他们可以将length加1。

语法

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

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

   // if entity is object, increase objectsLen by 1, which is the stores the total number of objects in array.
   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;
         
        // array of objects and ohter elements
        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++) {
           // checking the type of the object.
           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()方法来统计对象的个数。

// filter all entity which type is object
let allObject = array.filter((val) => {

   // checking the type of elements using the typeof operator.
   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");
      
      // array of objects and ohter elements      
      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数组中计算对象实体。第一种方法和第二种方法具有相同的时空复杂度。当我们查看两种方法的空间复杂度时,第一种方法具有较低的空间复杂度,并且优化得更好。

更新于:2023年10月31日

25K+ 浏览量

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.