如何使用[](数组表示法)解决此算法

时间:2012-08-09 11:09:34

标签: actionscript-3

在下面的代码中,a.b的值是多少? (它既不是未定义的,也不是空的,也不是空字符串)

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 

PSEUDOCODE:

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 
 }

3 个答案:

答案 0 :(得分:1)

是数组。

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

你可以这样写:

a.b["hello"] = 1;

因为Array是动态类。您只需创建字段 hello

答案 1 :(得分:1)

如前所述,您刚刚在一个Object中创建了一个Array。数组应该用于存储索引基值而不是String 1 即:

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

如果要存储String键,则应使用Object:

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

当您使用Array时,length属性将仅反映您放入的所有索引基值,如果您添加了String基本属性,则不会将其考虑在内。 您可以做的是枚举数组的键,如果至少有一个则中断:

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 
}

答案 2 :(得分:0)

你可以这样做: if(a.b == null || a.b == undefined || (a.b).length == 0)

我并不完全明白你想要做什么,但是如果a.b是空的,那会不会让你知道?