首頁  >  文章  >  web前端  >  JavaScript如何檢查一個物件是否為空(程式碼範例)

JavaScript如何檢查一個物件是否為空(程式碼範例)

不言
不言轉載
2019-04-02 09:57:542248瀏覽

這篇文章帶給大家的內容是關於JavaScript如何檢查一個物件是否為空(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

檢查一個陣列為空很容易,直接呼叫length 方法即可,那麼如何檢查一個物件是否為空呢❓

這裡的空指的是對象沒有自有屬性

假設這裡有兩個對象,一個是obj 一個是anotherObj

let obj1 = {
    name: 'oli',
    child: {
        name: 'oliver'
    }
}

let obj2 = {
    [Symbol('name')]: 'alice'
}

let obj3 = Object.defineProperty({}, 'name', {
    value: 'alice',
    enumerable: false
})

let obj4 = Object.create(null)

// 我们需要一个函数,判断是否不含自有属性

isEmpty(obj1) // false
isEmpty(obj2) // false
isEmpty(obj3) // false
isEmpty(obj4) // true
❗️想了半天查看對像是否有Symbol 屬性只能使用getOwnPropertySymbols 方法,如果還有更好的方法歡迎留言

方法一:遍歷

for-in 遍歷,並透過hasOwnProperty 方法確認是否存在某個key 這種方法不能夠遍歷到enumerable 為false 的屬性

const isEmptyObj = object => {
    if (!!Object.getOwnPropertySymbols(object).length) {
        return false
    }
    for (const key in object) {
        if (object.hasOwnProperty(key)) {
            return false
        }
    }
    return true
}

方法二:keys 方法

使用Object 靜態方法keys 然後判斷length 即可,keys 傳回的是自身可枚舉屬性,因此同樣的不可遍歷到enumerable 為false 的屬性

const isEmptyObj = object => {
    if (!!Object.getOwnPropertySymbols(object).length) {
        return false
    }
    if (Object.keys(object).length) {
        return false
    }
    return true
}

方法三:JSON 方法

使用JSON Stringify 方法將物件轉為字串,與字符字串'{}' 對比,同樣此方法無法取得到不可遍歷屬性

const isEmptyObj = object => {
    if (!!Object.getOwnPropertySymbols(object).length) {
        return false
    }
    return JSON.stringify(object) === '{}'
}

#方法四:getOwnPropertyNames 方法

使用Object 的getOwnPropertyNames 方法,取得所有屬性名,這樣就算是不可枚舉屬性依然能夠取得到,算是比較ok 的方法。

const isEmptyObj = object => {
    if (!!Object.getOwnPropertySymbols(object).length) {
        return false
    }
    if (!!Object.getOwnPropertyNames(object).length) {
        return false
    }
    return true
}

JavaScript如何檢查一個物件是否為空(程式碼範例)

簡化版:

const isEmptyObj = object => !Object.getOwnPropertySymbols(object).length && !Object.getOwnPropertyNames(object).length

【相關推薦:JavaScript影片教學

#

以上是JavaScript如何檢查一個物件是否為空(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除