2011-01-27 112 views
0

對不起,如果標題有點混亂。這就是我的意思 - 我有一個數組和對象。讓我舉一個直觀:另一個數組變量中的數組變量

這是我的目標:

obj["id"] = ["1","2","3"]; 
obj["name"] = ["na","no","ne"]; 

我itemArray:

itemArray = ["id","name"]; 

而現在,我想在對象檢索的項目,我想

for (var i:int = 0; i<objLen; i++) 
{ 
    for (var j:int = 0; j<count; j++) 
    { 
     textBox_txt.appendText(obj.arr[i][j]); 
    } 
} 

但它不起作用。我該如何在數組中實際使用arr [i]變量? :■

回答

0

也許是這樣的:

var array:Array; 
var count:int; 
for(var i:int = 0; i < itemArray.length; i++) 
{ 
    array = obj[ itemArray[ i ] ]; 
    count = array.length; 
    for (var j:int = 0; j<count; j++) 
    { 
     textBox_txt.appendText(array[ j ]); 
    } 
} 
+0

這工作,謝謝! – sanzochan 2011-01-27 09:08:04

0

好吧,我剛剛發現這一點。 jeremyne​​albrown的回答工作但也有另一種方式去它:http://www.kirupa.com/forum/showpost.php?p=2596002&postcount=2

var obj = new Object(); 
obj["id"] = ["1","2","3"]; 
obj["name"] = ["na","no","ne"]; 
obj["sasdf"] = "asdfa asdfasdf asdf asdf af"; 

for (var i in obj) 
{ 
     if (obj[i] is Array) 
     { 
       for (var j:int = 0; j<obj[i].length; j++) 
       { 
         trace(obj[i][j]); 
         //textBox_txt.appendText(obj.arr[i][j]); 
       } 

     } 

} 
0

從本質上講,利用兩個[]運營商訪問嵌套的數組是正確的,但你混淆陣列放在一起的方式:

  1. 你的第一個對象有兩個命名的屬性,「ID」和「名」,各包含一維數組

    var obj:Object = { 
        id:["1", "2", "3"], 
        name:["na", "no", "ne"]; 
    } 
    

    (我使用這種表示法使事情更具可讀性 - 它創建與您的代碼相同的對象。注意{}和[]括號!)

  2. 你itemArray是一維數組,這裏面只有兩個字符串,但它不會在其他地方出現在代碼

    itemArray = ["id", "name"]; 
    
  3. 您的循環遍歷obj的對象,不存在財產 「ARR」:

    for (var i:int = 0; i<objLen; i++) 
    { 
        for (var j:int = 0; j<count; j++) 
        { 
         textBox_txt.appendText(obj.arr[i][j]); // obj has properties "id" and "name", but not "arr" 
        } 
    } 
    

現在忘記高於一切。這是你如何能做到這一點沒錯:

  1. 如果你想要一個二維數組,你可以省略屬性名稱:

    var arr:Array= [ 
            ["1", "na"], 
            ["2", "no"], 
            ["3", "ne"] 
           ]; 
    

    (注:這有一個嵌套套[]運算符,沒有{}括號!) 並重復這樣的:

    for (var i:int = 0; i<arr.length; i++) 
    { 
        for (var j:int = 0; j<arr[i].length; j++) 
        { 
         textBox_txt.appendText(arr[i][j]); 
        } 
    } // output: 1na2no3ne 
    
  2. 你也可以使用一個名爲屬性,使事情看起來不錯,和你的代碼更易讀:

    var itemArray:Array = [ 
        {id:"1", name:"na"}, 
        {id:"2", name:"no"}, 
        {id:"3", name:"ne"} 
    ]; 
    

    (請注意如何[]和{ }支架已經改變的地方!)

    這是一個一維數組包含3個對象,每個都有合適的關係「ID」和「名稱」。然後,您可以遍歷追加個別對象名稱來您的文字是這樣的:

    for each (var obj:Object in itemArray) { 
        textBox_txt.appendText(obj.id + "" + obj.name); 
    } // output: 1na2no3ne