問題連結:https://leetcode.com/problems/is-object-empty/description/
給定一個物件或數組,如果為空則傳回。
您可以假設物件或陣列是 JSON.parse 的輸出。
Sooo...我們得到一個陣列或一個物件作為這個名為 obj 的函數的參數。 (是的,我知道,超級有創意的名字,但稍後它就會有意義!)
我們的任務?執行一些神奇的編碼技巧,首先確定該 obj 是數組還是物件。然後,根據這些知識,我們將決定下一步要做什麼。
最後,我們需要檢查這個物件/陣列是否為空。很簡單,對吧? (或是…)
首先要做的事情:「從技術上講,陣列是 JavaScript 中的一個物件。」是的!沒錯,數組是 JS 中一種特殊類型的物件。所以,不要混淆!
物件來偵測101:我們可以透過使用 typeof obj === 'object' && obj !== null 來檢查參數是否實際上是物件(或陣列)。為什麼 !== null 部分?嗯,因為 null 是 JS 中的一個特例。儘管從技術上講它是物件類型,但它就像虛無的空虛。因此,我們排除了這一點,以防萬一(即使問題沒有明確提及,這是一個好習慣)。
未定義和空元素:物件和陣列都可以具有未定義或空的屬性/元素。但不用擔心——當我們檢查長度時它們仍然會計算在內。他們沒有從我們的驗證中獲得免費通行證!
它是陣列嗎? :我們可以使用 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.
第三步:它是一個物件嗎?
如果它不是數組,我們使用 Object.keys(obj).length === 0 檢查它是否是物件。此方法傳回物件中鍵的數量。沒有鑰匙?空了!
第4步:預設
如果輸入不是物件(或為空),我們傳回 false,因為問題指定我們只使用物件或陣列。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3