簡體   English   中英

AS3循環創建多個數組

[英]AS3 create multiple arrays in loop

我正在嘗試制作六個數組,所以我已經手工創建了它們。 我知道有一種方法可以縮短整個混洗時間,但是這讓我無所適從。

var variant_1:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");

var variant_2:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");

var variant_3:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");

var variant_4:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");

var variant_5:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");

var variant_6:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");

注意getNum()是一個函數,可為我提供介於1到90之間的隨機數字,然后將它們分配給動態創建的表。

注意2 :數組中的空值是表中的空單元格,因為在9x3的表中,我需要15個數字和12個空位。

注意3 :是的,這是賓果游戲。

謝謝。

您可以使用for循環。

for(var i:int=0; i<10; i++) {
  trace(i);       
} 

對於您要嘗試執行的操作,可以將其包裝在返回新數組的函數中

function createArray(){
   var a = [];//new array

   for(var i:int=0; i<??; i++) {
      //some conditions
      if(i < ??)  {
         //push to array
      }  
      else {
         //push to array
      }  
   } 

  return a;
}


var myNewArray:Array = createArray();

看看http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/loops.html ,這是一個不錯的循環介紹。

var variants = createVariants(6, 15, 12);

//使用您的變體:// variants [0] [0]與您的variant_1 [0]相同

function createVariants(numVariants : int, numPrefilled : int, numEmpty : int) : Array{
  var variants : Array = [];
  for(var i : int = 0;i<numVariants;i++){
    var variant : Array = [];
    for(var j : int = 0;j<numPrefilled ;j++){
      variant.push(rp.getNum());
    }
    for(var j : int = 0;j<numEmpty ;j++){
      variant.push("");
    }
    variants.push(variant);
  }
  return variants;
}

根據Paul的回答,您還可以使用2d數組存儲每個數組,其好處是可以使用循環創建所需數量的數組變體(成本將是維護2d數組的額外復雜性)。

使用二維數組可能像:

function createArrayVarient(){
    var result:Array = new Array();
    var counter:int;

    // 15 as there are 15 numbers added first
    for(counter = 0; counter < 15; counter++){
        result.push(rp.getNum());
    }

    // 12 for the number of "" added
    for(counter = 0; counter < 12; counter++){
        result.push("");
    }
    return result;
}

var arrayVarients:Array = new Array();

// 6 as you have 6 array variants in your sample
for(var counter = 0; counter < 6; counter++){
    arrayVarients.push(createArrayVarient());
}

然后,如果您之前沒有使用過2D數組,則要訪問“ arrayVarients”內部的每個數組變量,它將執行以下操作:

arrayVarients[0] // the first array variant
arrayVarients[1] // the second array variant
arrayVarients[2] // the third array variant
...etc

要訪問數組變量內的每個值,它將使用(使用2個索引):

arrayVarients[0][0] // the first value in the first variant array
arrayVarients[2][7] // the eight value in the third variant array

我想這就是你想要的

var iVariantCount:int = 6;//number of variants
var arrVariants:Array = new Array();//this will hold your variants array (variant_1,variant_2,etc)
var iVariantLength:int = 27;//total no fo elements in a variant array
var iRandomNumCount:int = 15;//no of random numbers in a variant array

for (var i:int = 0;  i<iVariantCount ; i++) 
{
    var arrVariant:Array = new Array();
    for (var j:int = 0;  j < iVariantCount ; j++) 
    {
        if (i < iRandomNumCount)
        {
            arrVariant.push(rp.getNum());
        }
        else
        {
            arrVariant.push("");
        }
        arrVariants.push(arrVariant);
    }   
}

//Check the result
for (i = 0;  i<arrVariants.length ; i++) 
{
    trace("Variant_" + i + ": " + arrVariants[i]);
}

試試這個,告訴我它是否適合您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM