博客 / 詳情

返回

如何在 JavaScript 中判斷一個對象是否為空?

本文已整理到 Github,地址 👉 blog

如果我的內容幫助到了您,歡迎點個 Star 🎉🎉🎉 鼓勵鼓勵 :) ~~

我希望我的內容可以幫助你。現在我專注於前端領域,但我也將分享我在有限的時間內看到和感受到的東西。


我們想要判斷對象是否為空,像基本類型那樣比較是不可以的

const obj = {}
console.log(obj === {}) // false

可以看到,兩個都是空對象,但是進行比較,返回的是 false

因為對象是引用類型,使用 ===== 比較的是引用(內存地址),因此您不能使用它們比較兩個對象。

下面我們來介紹三種判斷空對象的方法。

for...in

for...in 語句以任意順序遍歷一個對象的除 Symbol 以外的可枚舉屬性。

根據 for...in 遍歷對象,如果存在則返回 非空,否則返回

const obj = {}
const user = {
  name: 'IU'
}

const isEmpty = (obj) => {
  for (let i in obj) {
    return '非空'
  }
  return '空'
}

console.log(empty(obj)) // "空"
console.log(empty(user)) // "非空"

JSON.stringify()

利用 JSON 的 JSON.stringify() 方法來判斷。將空對象轉化為字符串 '{}' 來進行判斷。

const isEmpty = (obj) => (JSON.stringify(obj) === '{}' ? '空' : '非空')

console.log(empty(obj)) // "空"
console.log(empty(user)) // "非空"

Object.keys()

Object.keys() 方法會返回一個由一個給定對象的自身可枚舉屬性組成的數組。如果對象為空,將返回一個空數組。

檢查對象是否為空的最簡單方法是檢查它是否有鍵。我們使用 ES6 中的 Object.keys() 方法檢查對象是否有鍵。

const isEmpty = (obj) => (Object.keys(obj).length === 0 ? '空' : '非空')

console.log(empty(obj)) // "空"
console.log(empty(user)) // "非空"
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.