0

1 つの巨大な配列 (MasterArray) に複数のサブ配列があります。これは、サブ配列が既に MasterArray 内にあることを意味します。これらのサブ配列をすべて「融合」して、[ ] 角かっこを削除したいと思います。

配列は既に MasterArray 内にあるため、「concat」メソッドは避けたいと思います。これを行うコマンド/メソッドはありますか? ありがとうございました。

var englandCities:Array = [London, Manchester, Leeds];
var franceCities:Array = [Paris, Orleans, Avignon];

var europeanCities:Array = [englandCities, franceCities];

どうにかして、europeanCities 配列にネストされた "London" を指摘したいと思います。トレースしようとすると、意味のある「englandCities」が表示されます。

trace(europeanCities[0]);
// displays "englandCities"
// how can I make it display "London" ?

"London" を表示するように europeanCities 配列を作成するにはどうすればよいですか? concat() を使用せずに、「europeanCities」配列からこれらの角括弧を削除する必要があります...

OKAY、これを少し言い換えさせてください。私のマスター配列:

var europeanCities:Array = [englandCities, franceCities];

に等しい

[[London, Manchester, Leeds], [Paris, Orleans, Avignon]];

私は正しいですか?そして今、次のようなものを得るために内側のブラケットを削除する方法:

[London, Manchester, Leeds, Paris, Orleans, Avignon];

そして、配列は englandCities や frenchCities よりもはるかに長いことに注意してください.... 30 の異なる都市があります。

4

3 に答える 3

1

あなたはconcatそれらを簡単に一緒にすることができます、そしてそれは本当に最も簡単なオプションです:

var englandCities:Array = ["London", "Manchester", "Leeds"];
var frenchCities:Array = ["Paris", "Orleans", "Avignon"];
var masterArray:Array = [englandCities, frenchCities];

var europeanCities:Array = new Array();

for each(var country:Array in masterArray) {
    europeanCities = europeanCities.concat(country);
}

trace(europeanCities); // London,Manchester,Leeds,Paris,Orleans,Avignon

concat値を複製したくないという問題でない限り、これを回避する理由がわかりません。(したがって、変更するenglandCities[0]と変更も行われeuropeanCities[0]ます。)

都市がObjects原始的な都市ではなくString、連結Arrayされたものであれば問題なく機能します。ただし、それらがプリミティブである場合、。を使用してこれを行う方法はありませんArray。ただし、次のような同様の動作を提供する関数を作成できます。

var englandCities:Array = ["London", "Manchester", "Leeds"];
var frenchCities:Array = ["Paris", "Orleans", "Avignon"];
var allCities:Array = [englandCities, frenchCities];

function europeanCities(id:int):String {
    var cityID:uint = 0;
    while (id > allCities[cityID].length - 1) {
        id -= allCities[cityID].length;
        cityID++;
    }
    return allCities[cityID][id];
}

trace (europeanCities(0)); // London
trace (europeanCities(5)); // Avignon
于 2013-03-22T16:24:47.583 に答える
1

可能性があるのでここに書いておきます。

concat を使用しないことを主張する場合、ここに 1 つの悪い解決策があります。

 // join elements into a comma delimited string
 var s: String = europeanCities.join(','); 
 // Split the string with delimiter as commas
 europeanCities = s.split(',');  

サブ配列要素は、結合区切り文字に関係なく自動的に「,」で結合され、結合区切り文字は既に「,」であるため、これは機能します。

ただし、このソリューションは CPU を集中的に使用するため、最適ではありません。

于 2013-03-22T12:46:41.607 に答える
1

空の配列を作成し、masterArrayサブ配列を取得してトラバースしconcat()、新しい配列に対して a を実行します。これにより、マスター配列を乱すことなく、フラットな別の配列が作成されます。

于 2013-03-22T11:00:24.297 に答える