この記事の内容は、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 }
簡易バージョン:
const isEmptyObj = object => !Object.getOwnPropertySymbols(object).length && !Object.getOwnPropertyNames(object).length
[関連する推奨事項: JavaScript ビデオ チュートリアル]
以上がJavaScript でオブジェクトが空かどうかを確認する方法 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。