另一个数组变量中的数组变量

时间:2011-01-27 08:30:06

标签: flash object multidimensional-array

很抱歉,如果标题有点令人困惑。这就是我的意思 - 我有一个数组和对象。让我给出一个视觉:

这是我的目标:

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]变量? :■

3 个答案:

答案 0 :(得分: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 ] );
    }
}

答案 1 :(得分: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]);
               }

       }

}

答案 2 :(得分:0)

基本上,使用两个[]运算符来访问嵌套数组是正确的,但是您将数组放在一起的方式令人困惑:

  1. 您的第一个对象有两个命名属性,“id”和“name”,每个包含一维数组

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

    (我使用这种表示法使事物更具可读性 - 它创建与代码相同的对象。注意{}和[]括号!)

  2. 您的itemArray是一维数组,内部只有两个字符串,但它不会出现在代码中的任何其他位置

    itemArray = ["id", "name"];
    
  3. 你的for循环迭代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"
        }
    }
    
  4. 现在忘记上面的一切。这就是你如何做到这一点:

    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”和“name”。然后,您可以迭代将单个对象名称附加到文本中,如下所示:

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