2012-08-09 37 views
-1

在下面的代碼中,a.b的值是什麼? (這既不是未定義的,或者爲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 
} 

回答

1

如前所述,您剛創建了一個數組到對象中。陣列應該用來存儲指數的基礎值不串一個 即:

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

如果你想存儲字符串鍵的對象應使用:

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

當您使用數組的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 
} 
1

正是數組。

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

你可以這樣寫:

a.b["hello"] = 1; 

因爲數組是動態類。您只需創建字段hello

+0

比方說,我有一個來檢查,如果「你好」被初始化與否的條件。假設我沒有初始化它。那麼我怎樣才能進入第一個條件塊(見僞代碼) – 2012-08-09 11:23:05

+0

嗯,我不明白你的意思寫*內容* :)如果proprty是* undefined *這意味着proprty被創建('var a :Object = {}; ab;')但是沒有任何指向這個屬性的指針。如果財產存在並且它不是*未定義的*那麼這個財產指向一些價值或對象。 – eleven 2012-08-09 11:37:33

0

你可能只是做這樣的事情: if(a.b == null || a.b == undefined || (a.b).length == 0)

我不完全理解你希望做什麼,但不會是讓你知道,如果A·B是空的?

+0

它不工作。我在這個問題中提到過它。 – 2012-08-09 12:01:19