この記事では、JavaScriptでオブジェクトが空であるかどうかを確認する方法をすばやく説明します。
毎日のJavaScript開発では、オブジェクトが空であるかどうかを確認する必要がある場合があります。これを行ったことがあるなら、おそらく単一の直接的な解決策がないことを知っています。ただし、さまざまな手法を使用して、独自のユースケースに合ったカスタムソリューションを作成できます。さらに、プロジェクトでJavaScriptユーティリティライブラリを使用している場合、ライブラリはすでにオブジェクトが空であるかどうかを確認するための組み込みの方法を提供する場合があります。
このセクションでは、ES5バージョンをサポートする最新のブラウザで使用できるさまざまな方法について説明します。
Object.keys()
メソッドは、指定されたオブジェクトの列挙属性名の配列を返します。したがって、この配列の長さを計算することにより、オブジェクトにプロパティがあるかどうかを確認できます。次の例を見てみましょう。
関数isemptyObject(obj){ return object.keys(obj).length === 0; } console.log(isemptyObject({})); // output:true var bar = {"foo": "1"}; console.log(object.keys(bar).length); console.log(isemptyObject(bar)); // output:false
上記の例に示すように、 foo
属性が添付されているため、 isEmptyObject
関数は異なる値でisEmptyObject
関数を返します。
isEmptyObject
がregexpオブジェクトのtrue
を返すことに注意してください。
console.log(isemptyobject(date.now()); // output:true console.log(isemptyObject(new regexp()); // output:true
また、この方法は未定義の値で呼び出されるため、注意してください。それらは例外を引き起こす可能性があります。その後、空の入力で失敗しない防弾ソリューションを作成します。
console.log(isemptyObject(null));
Object.getOwnPropertyNames()
メソッドは、指定されたオブジェクトのすべてのプロパティの配列を返します。 Object.keys()
メソッドと同じように見える場合がありますが、 Object.getOwnPropertyNames()
メソッドは、非変更不可能なプロパティも考慮しますが、 Object.keys()
は、宣言されていないいくつかのプロパティを逃します。次の例を見てみましょう。
関数isemptyObject(obj){ return object.getownPropertYnames(obj).length === 0; } console.log(isemptyObject({})); // output:true var bar = {"foo": "1"}; console.log(object.getownpropertynames(bar).length); console.log(isemptyObject(bar)); // output:false
ご覧のとおり、 Object.keys()
を使用して、null値をテストします。
ただし、エッジケースはわずかに異なります - Date
ですが、 null
またはJSON.stringify
の場合はfalse
が返されます。
{}
を使用して、指定されたオブジェクトが空であるかどうかを確認します。
次の例を見てみましょう。
関数isemptyObject(obj){ return json.stringify(obj)=== '{}'; } console.log(isemptyObject({})); // output:true var bar = {"foo": "1"}; console.log(json.stringify(bar)); // output:{"foo": "1"} console.log(isemptyObject(bar)); // output:false
繰り返しますが、エッジの状況はわずかに異なります。 "1651283138454"はregexpで使用されます。したがって、 Object.getOwnPropertyNames
メソッドを使用してください!
console.log(isemptyobject(date.now()); // output:false console.log(isemptyObject(new regexp()); // output:true
別の変化はfalse
ですが、それはあなたが期待するものではないかもしれません。
console.log(isemptyobject(null)); // output:false
Object.entries()
メソッドの配列を返し、各要素はオブジェクトプロパティのキー価値ペアの配列です。次の例を見て、それが正確にどのように機能するかを理解しましょう。
関数isemptyObject(obj){ return object.entries(obj).length === 0; } console.log(isemptyObject({})); // output:true var bar = {"foo": "1"}; console.log(object.entries(bar)); // output:['foo'、 '1']] console.log(object.entries(bar).length); console.log(isemptyObject(bar)); // output:false
ご覧のとおり、 Object.keys()
メソッドは、Regexp Object Edge Caseの例で同じ結果を示します。未定義の入力の場合、例外もスローします。
console.log(isemptyobject(date.now()); // output:true console.log(isemptyObject(new regexp()); // output:true
上記の単純な解決策の1つの問題は、特別なオブジェクト(日付など)、未定義の値、またはプリミティブ(整数など)のエッジケースの一貫性のない結果を与えることです。これは、シンプルだが信頼性の高いソリューションです。
関数isemptyObject(value){ const type = typeof値 const isobject = value!= null && type === 'object' return isobject && object.keys(value).length === 0; }
この方法は、その名前で正確に実行されます。入力値がオブジェクトと空のオブジェクトの両方である場合にのみ、 true
を返します。 null
およびundefined
値で動作します - オブジェクトではないためfalse
を返します。 Regexpのような特別なオブジェクトの場合、特別なキーを定義しないためtrue
が返されます。また、空のアレイにはtrue
、非空白アレイの場合はfalse
返されます。
このセクションでは、古いブラウザでも機能するソリューションについて説明します。この方法は、オブジェクトが空であるかどうかを確認する組み込みの方法が組み込まれていない場合、JavaScript ES5 ERAの前によく使用されました。
次の例を見てみましょう。
関数isemptyObject(obj){ for(objのvarプロパティ){ if(obj.hasownproperty(プロパティ)){ falseを返します。 } } trueを返します。 } console.log(isemptyObject({})); // output:true console.log(isemptyObject({"foo": "1"}); // output:false
上記の例では、オブジェクトが空であるかどうかを確認するために呼び出すことができるカスタム関数を構築しました。パラメーターを受け入れ、テストするにはオブジェクトを渡す必要があります。 FALSEでは、それ以外の場合は、 isEmptyObject
関数を異なる値で返します。上記の例に示すように、それを異なる値で呼び出し、 isEmptyObject
メソッドを使用して出力を記録します。これにより、オブジェクトが空であるかどうかを確認できます。
以下の例を簡単に見てみましょう。
jquery.isemptyObject({}); jquery.isemptyObject({"foo": "1"});
ご覧のとおり、 _.isEmpty()
を使用することは非常に簡単です。
この記事では、JavaScriptでオブジェクトが空であるかどうかを確認するいくつかの異なる方法について説明します。 JavaScriptプログラミングに関する他のチュートリアルをご覧ください!
この投稿は、ニーマムガンガの貢献で更新されました。
以上がJavaScriptでオブジェクトが空であるかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。