0

数時間前に問題を投稿しましたが、よりわかりやすい方法で質問する方法を見つけたと思います。

これは私のコードです:

// 1. Intro
var introPL1:Array = ["intro1","intro2","intro3","intro4"];
var introPL2:Array = ["intro5","intro6","intro7","intro8","intro9"];
var introPL3:Array = ["intro10","intro11"];
var introPL4:Array = ["intro12","intro13"];
var allIntro:Array = [introPL1,introPL2,introPL3,introPL4];
// 2. Clothes
var clothesPL1:Array = ["clothes1","clothes2","clothes3","clothes4","clothes5"];
var clothesPL2:Array = ["clothes6","clothes7","clothes8"];
var clothesPL3:Array = ["clothes9","clothes10"];
var clothesPL4:Array = ["clothes11","clothes12","clothes13"];
var allClothes:Array = [clothesPL1,clothesPL2,clothesPL3,clothesPL4];
// 3. Colored Numbers
var colNumPL1:Array = ["colNum1","colNum2","colNum3","colNum4","colNum5"];
var colNumPL2:Array = ["colNum6","colNum7","colNum8"];
var colNumPL3:Array = ["colNum9","colNum10"];
var colNumPL4:Array = ["colNum11","colNum12","colNum13"];
var allColNum:Array = [colNumPL1,colNumPL2,colNumPL3,colNumPL4];

var allStuff:Array;
allStuff = allIntro.concat(allClothes, allColNum);
trace(allStuff[4]);

allStuff[4] をトレースすると、「clothes1,clothes2,clothes3,clothes4,clothes5」と表示されます。問題は、すべてのものを allStuff 配列 (サブ配列なし) に入れ、allStuff[4] をトレースするときに "intro5" (巨大な allStuff 配列の 5 番目の項目) を表示することです。 .

4

2 に答える 2

2

そのときに使いたい機能はconcat

ここにアドビの例があります

var numbers:Array = new Array(1, 2, 3);
var letters:Array = new Array("a", "b", "c");
var numbersAndLetters:Array = numbers.concat(letters);
var lettersAndNumbers:Array = letters.concat(numbers);

trace(numbers);       // 1,2,3
trace(letters);       // a,b,c
trace(numbersAndLetters); // 1,2,3,a,b,c
trace(lettersAndNumbers); // a,b,c,1,2,3

それはかなり簡単です:

allStuff= allStuff.concat(introPL1,introPL2,introPL3,introPL4,clothesPL1,clothesPL2,clothesPL3,clothesPL4,colNumPL1,colNumPL2,colNumPL3,colNumPL4);

あなたもすることができます

allStuff = []
for each(var $string:String in $arr){
   allStuff.push($string)
}

配列ごとに、または関数にする

于 2013-03-22T20:32:45.333 に答える
0

さて、配列をこのように宣言したら、配列をフラット化するための追加操作が必要になりますallClothes。次のようにします。

function flatten(a:Array):Array {
    // returns an array that contains all the elements 
    // of parameter as a single array
    var b:Array=[];
    for (var i:int=0;i<a.length;i++) {
        if (a[i] is Array) b=b.concat(flatten(a[i]));
        else b.push(a[i]);
    }
    return b;
}

機能: 関数は最初に空の配列を作成し、次にパラメーター メンバーをメンバーごとにチェックします。i 番目のメンバーが配列の場合、そのメンバーをパラメーターとして自身を呼び出し、結果を一時配列に追加します。それ以外の場合は、の次のメンバーをa一時配列にプッシュするだけです。したがって、フラットな配列を作成するには、宣言した後にallIntro呼び出す必要があります。allIntro=flatten(allIntro)他の配列についても同様です。

于 2013-03-23T06:46:38.407 に答える