最近、プロジェクトは空のオブジェクトを判断する際に問題に遭遇しました。関連する情報を確認し、要約してください。
空のオブジェクトが空のストリングを判断することと同じではなく、空のオブジェクトもオブジェクトであり、メモリは文字列のように空であるのではなく、個別に割り当てる必要があるため、米の大きな鍋です。次のように、誰もが平等です:
上記のコードに示すように、それがオブジェクトリテラルを介して作成された空のオブジェクトであろうと、オブジェクトコンストラクターを介して作成された空のオブジェクトであろうと、互いに等しくないことがわかります。
1。比較のためにオブジェクトを文字列に変換します
この方法は推奨されませんが、実際に考えるのが最も簡単です。主にjson.stringify()を使用してオブジェクトを強制します。それは見た目のために投稿されています:
var a = {}; var b = new object(); console.log( "オブジェクトリテラルの比較結果:"+(json.stringify(a)== "{}"))console.log( "コンストラクターの比較結果:"+(json.stringify(b)== "{}"))文字列に変換された2つの空のオブジェクト間の比較が真であり、この問題を解決することができますが、推奨されません。以下の2番目の方法について説明しましょう。
2.ループ中
for for in loopを使用して、すべての属性を繰り返して、オブジェクトが空のオブジェクトであるかどうかを判断します。
var a = {}; var b = new object(); function isemptyObject(obj){for(var key in obj){return false}; return true}; if(isemptyObject(a)){alert( "aは空のオブジェクト")} if(isemptyobject(b)){alert( "b is vise object")}for in loopを使用して、ループ時にオブジェクトをループし、次のような配列をループするときに対応するループ字スクリプトをループします。
var b = ["hello"、 "my"、 "world"] for(var index in b){console.log(b [index]);} //こんにちは私の世界上記は、編集者からもたらされたすべてのコンテンツ(タイトル)です。 wulin.comをもっとサポートしてくれることを願っています〜