本文已整理到 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)) // "非空"