如何統計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.