Jeff的隨手筆記

學習當一個前端工程師

0%

用LeetCode寫日記-Day20

寫了好幾天的Medium難度的題目,終於來個簡單的!

Day20: Is Object Empty

問題描述:

Given an object or an array, return if it is empty.

  • An empty object contains no key-value pairs.
  • An empty array contains no elements.

You may assume the object or array is the output of JSON.parse.

問題難度:Easy

問題限制:

  • obj is a valid JSON object or array
  • 2 <= JSON.stringify(obj).length <= 105

我的解題過程:

看到題目的第一瞬間想說好簡單喔,不假思索的直接打出:

1
2
3
4
5
if (obj.length === 0) {
return true
} else {
return false
}

結果在第二個測試發生錯誤,看了一下測試的內容發現他是空物件,在查詢了一下資料後才知道,我這個方法是適合使用在判斷array,如果要判斷object時就不是那麼適合。

因此改成:

1
2
3
4
5
6
const arr = Object.keys(obj)
if (obj.length === 0) {
return true
} else {
return false
}

當然還可以改成三元運算子,但這邊就不改了

我的code:

1
2
3
4
5
6
const arr = Object.keys(obj)
if (obj.length === 0) {
return true
} else {
return false
}

其他解法:

1
2
3
var isEmpty = function(obj) {
return Array.isArray(obj) ? obj.length === 0 : Object.keys(obj).length === 0;
};

總結:

之前應該是有使用過Object.keys(),但真的忘掉了,因此重新複習了一下。
簡單來說,Object.keys() 是 JavaScript 中一個內置的方法,用來返回一個包含給定對象所有可枚舉屬性名的數組。

1
2
3
4
5
const obj = { name: "John Doe", age: 30 };

const keys = Object.keys(obj);

console.log(keys); // ["name", "age"]