JavaScript でオブジェクトが空かどうかを確認する方法 (コード例)

不言
リリース: 2019-04-02 09:57:54
転載
2434 人が閲覧しました

この記事の内容は、JavaScript でオブジェクトが空かどうかを確認する方法 (コード例) についてです。一定の参考値があり、困っている友人が参考にすることができます。お役に立てば幸いです。

配列が空かどうかを確認するのは簡単です。length メソッドを直接呼び出すだけです。では、オブジェクトが空かどうかを確認する方法❓

ここでの空とは、オブジェクトに独自のプロパティはありません

ここに 2 つのオブジェクトがあるとします。1 つは obj で、もう 1 つは 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 メソッドのみを使用できます。より良い方法がある場合は、メッセージを残してください

方法 1: Traverse

for-in hasOwnProperty メソッドを使用して、特定のキーが存在するかどうかを確認します。このメソッドは、列挙可能値が false

const isEmptyObj = object => {
    if (!!Object.getOwnPropertySymbols(object).length) {
        return false
    }
    for (const key in object) {
        if (object.hasOwnProperty(key)) {
            return false
        }
    }
    return true
}
ログイン後にコピー

メソッド 2: キー メソッド

使用するプロパティをトラバースすることはできません。オブジェクトの静的メソッドのキーを取得し、長さを決定します。キーが返すのは、それ自体で列挙できるということです。属性なので、列挙可能値が false

const isEmptyObj = object => {
    if (!!Object.getOwnPropertySymbols(object).length) {
        return false
    }
    if (Object.keys(object).length) {
        return false
    }
    return true
}
ログイン後にコピー

方法 3: JSON メソッド

JSON Stringify メソッドを使用してオブジェクトを文字列に変換します。文字列 '{}' の比較では、同じメソッドでは走査不可能なプロパティを取得できません

const isEmptyObj = object => {
    if (!!Object.getOwnPropertySymbols(object).length) {
        return false
    }
    return JSON.stringify(object) === '{}'
}
ログイン後にコピー

方法 4: getOwnPropertyNames メソッド

Object の getOwnPropertyNames メソッドを使用してすべてのプロパティ名を取得します。これにより、列挙不可能な属性も取得できます。これは比較的問題のない方法です。

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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート