首頁  >  文章  >  web前端  >  [Leetcode] 物件是否為空

[Leetcode] 物件是否為空

Linda Hamilton
Linda Hamilton原創
2024-10-02 22:31:30659瀏覽

[Leetcode] Is Object Empty

問題連結:https://leetcode.com/problems/is-object-empty/description/

[問題陳述]

給定一個物件或數組,如果為空則回傳。

  • 空物件不包含鍵值對。
  • 空數組不包含任何元素。

您可以假設物件或陣列是 JSON.parse 的輸出。

[理解問題]

  1. Sooo...我們得到一個陣列或一個物件作為這個名為 obj 的函數的參數。 (是的,我知道,超級有創意的名字,但稍後就會有意義!)

  2. 我們的任務?執行一些神奇的編碼技巧,首先確定該 obj 是數組還是物件。然後,根據這些知識,我們將決定下一步要做什麼。

  3. 最後,我們要檢查這個物件/陣列是否為空。很簡單,對吧? (或是…)

[重點]

  1. 首先要做的事情:「從技術上講,陣列是 JavaScript 中的一個物件。」是的!沒錯,數組是 JS 中一種特殊類型的物件。所以,不要混淆!

  2. 物件偵測101:我們可以透過使用 typeof obj === 'object' && obj !== null 來檢查參數是否實際上是一個物件(或陣列)。為什麼 !== null 部分?嗯,因為 null 是 JS 中的一個特例。儘管從技術上講它是物件類型,但它就像虛無的空虛。因此,我們排除了這一點,以防萬一(即使問題沒有明確提及,這是一個好習慣)。

  3. 未定義和空元素:物件和陣列都可以具有未定義或空的屬性/元素。但不用擔心——當我們檢查長度時它們仍然會計算在內。他們沒有從我們的驗證中獲得免費通行證!

  4. 它是一個陣列嗎? :我們可以使用 Array.isArray(obj) 檢查參數是否為一個陣列。不過,無需再次檢查它是否是一個物件——我們之前已經這樣做了。

[解決方案代碼]

var isEmpty = function (obj) {
  if (typeof obj === "object" && obj !== null) { // Check if it's an object and not null
    if (Array.isArray(obj)) { // If it's an array
      return obj.length === 0; // Return true if it's empty
    } else { // If it's an object
      return Object.keys(obj).length === 0; // Return true if there are no keys
    }
  }
  return false; // If it's neither an object nor an array, return false
};

[進一步分解…]

第 1 步:檢查它是否是一個物件
首先,我們使用 typeof obj === 'object' && obj !== null 來確保輸入是一個物件而不是 null。 (因為我們都知道 typeof null === 'object 是 JavaScript 的怪癖之一。謝謝 JavaScript!)

第2步:它是一個陣列嗎?
我們使用 Array.isArray(obj) 來區分數組和常規物件。陣列有一個 length 屬性,所以我們可以直接檢查 obj.length === 0.

第3步:它是一個物件嗎?
如果它不是數組,我們使用 Object.keys(obj).length === 0 檢查它是否是物件。此方法傳回物件中鍵的數量。沒有鑰匙?空了!

第 4 步:預設
如果輸入不是物件(或為 null),我們將傳回 false,因為問題指定我們僅使用物件或陣列。

以上是[Leetcode] 物件是否為空的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn