-1

次のコードでは、abの値は何ですか?(未定義でも、nullでも、空の文字列でもありません)

var a = {} ;

a.b = [] ; 

//////////////////////a.b["hello"]="hello"; //comment, uncomment for testing it
trace( a.b )  // output is invisible, something like blank string
trace( (a.b).length ); // 0 , this could be used but the index is string ie. "hello" 

trace(a.b == undefined ) ; // false
trace(a.b == null) ; // false 

擬似コード:

if ( a.b is not having any type of content inside )
{
     //How to get inside this part, when a.b is not having any value 
    // do this 
}
else
{
   //do this 
 }
4

3 に答える 3

1

アレイです。

a.b = [] ; 
a.b = new Array(); //is similar

そして、あなたはこれを書くことができます:

a.b["hello"] = 1;

配列は動的クラスであるためです。フィールドhelloを作成するだけです。

于 2012-08-09T11:15:29.167 に答える
1

前に述べたように、オブジェクトに配列を作成しました。配列は、文字列1ではなくインデックスベース値を格納するために使用する必要があります。

var a:Array=[]; a[0]=XXX, a[1]=YYYY;

文字列キーを保存する場合は、オブジェクトを使用する必要があります。

var a:Object={}; a["foo"]=XXX, a["hello"]=YYYY;

配列を使用する場合、lengthプロパティは、内部に配置したすべてのインデックスベース値のみを反映します。Stringベースプロパティを追加した場合、それは考慮されません。できることは、配列のキーを列挙し、少なくとも1つある場合はブレークすることです。

var isEmpty:Boolean=true;
for (var s:String in a.b) { // enumerate keys that are into a.b
 isEmpty=false;
 break; // there is at least one key so exit the loop
} 

if (isEmpty) {
     //How to get inside this part, when a.b is not having any value 
    // do this 
} else {
   //do this 
}
于 2012-08-09T11:47:27.783 に答える
0

あなたはちょうどこのようなことをすることができます: if(a.b == null || a.b == undefined || (a.b).length == 0)

私はあなたが何をしようとしているのか完全には理解していませんが、それはabが空であるかどうかをあなたに知らせませんか?

于 2012-08-09T11:42:14.513 に答える