-1

重複の可能性:
JSONから空のJavascriptオブジェクトをテストするにはどうすればよいですか?

var test= {};

var incidentReport = {
      "place1": "n/a",
      "place2": "n/a",
      "place3": "n/a",
 }

上記は私の変数が見える2つの方法です。私は次のコードを実行して、その空/が{}のように見えるかどうかをテストしようとしました

if(test == "")

試してみました

if(test == null)

また試した

if(!test)

誰かが私がどこで間違っているのか知っていますか?JavaScriptとJSONの初心者です。私がしていることはバックプラクティスと見なされていますか?これを空と宣言するためのより良い方法はありますか?

ご支援ありがとうございます

4

3 に答える 3

2

JSON.stringifyを使用する

var test= {};
if(JSON.stringify(test).length==2)
alert('null')
于 2012-06-22T09:36:55.920 に答える
1
if(test == "")

空の文字列かどうかをチェックするため、これは機能しません

if(test == null)

nullそれが「類似」しているかどうかをチェックしますundefined-そうではありません

if(!test)

それが偽の値であるかどうかをチェックしますが、そうでない場合も同様です。

子要素(プロパティ)が存在するかどうかを確認する必要があります。

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop)) return false;
    }
    return true;
}

if ( isEmpty(test) ){...}

非常に重要な点は、.hasOwnProperty()これがオブジェクトの実際のプロパティであり、プロトタイプチェーンを通じて継承されるだけではないかどうかをチェックすることです。

于 2012-06-22T09:35:51.817 に答える
0

ここでのテストはオブジェクトです。したがって、彼のオブジェクトに特権/要素があるかどうかを確認する必要があります。以下のようなものを試すことができます

var test= {};

function isEmptyObject(obj) {
   // This works for arrays too.
   for(var name in obj) {
       return false
   }
   return true
}

alert("is this object empty?" + isEmptyObject(test));​
于 2012-06-22T09:36:41.747 に答える