2012-05-02 17 views
3

javascriptは真の多次元配列を許可していませんが、配列内に配列を持つことで "bodge"を並べ替えることができます。javascriptで多次元配列を作成する

私には2つの質問があります。

1)10個の配列を1個の多次元配列に変換すると、10個の配列が含まれているため、ウェブページのパフォーマンスが向上します。

2)100個の要素を持つ配列を作成したいと考えています。これらの要素のそれぞれは2要素の配列になり、最終的には不確定な長さの配列になります。

私は、この「多次元」配列を作成するために、次のコードがあります。

var RouteArray = new Array(100); 
for (var i=0; i <100; i++) 
{ 
RouteArray[i]=new Array(2); 
    for (var j=0; j <2; j++) 
    { 
    RouteArray[i][j] = new Array(); 
    } 
} 

は賢明な、このコードですか?経験豊富なコーダーがより良い方法を提案できるでしょうか?

また、私は、私は次のコードを使用して、上記の多次元配列に不定の配列に追加することができることを前提としています

RouteArray[88][0].push(ValueToPush); 

は最終的に私は、私はちょうど、以下を使用してプッシュしている値を呼び出すことができますか?この質問は、他の場所で回答されている場合

Var ValueAdded = RouteArray[88][0][0]; 

お時間を事前に感謝し、謝罪は、私が検索しようとしましたが、どちらかは、以前の記事を理解できなかったか、彼らはので、私はcouldn私の状況とは異なりであることが判明しました彼らが提案したものを適用しません。

ジョン

+0

は、この質問はおそらく、[コードレビュー](http://codereview.stackexchange.com)にトピックの詳細をだろう。 –

+0

一般的な提案として、FireBugやSafari開発者コンソールなどのツールに精通してください。インタラクティブに試してみることができます。または、最小限のhtmlページを作成し、サンプルコードを追加するだけです。ただ試してみてください。 – snies

+0

あなたの2人の良い友達はhttp://jsfiddle.net/(コードで遊ぶ)とhttp://jsperf.com/(パフォーマンスを比較する)です。この場合、私は可能な限り配列を初期化することで怠け者になるように誘惑されるでしょう。 – tjp

答えて

3

1)は、損傷を改善するか、またはウェブページの 性能に影響を及ぼさない、その中 10個の配列を有する1つの多次元配列に10個の配列を変換しますか?

パフォーマンス効果はほとんどありませんが、コードを理解してバグを少なくするあなたの能力に大きな影響を与えます。

2)私は100個のインデックスを持つ配列を作成するために期待していますが、これらの のそれぞれは、不定長の配列を持つことになります2つのインデックスの配列、最終的には各これら2つの 指標ので埋められます。

これはあなたのコード例の例とまったく同じように動作します。足を濡らしたい場合は、良い出発点です。実際には、多くのディメンションを持つ配列は、コードが動作するものをモデル化するための最良のデータ構造ではなく、主に「発見可能」ではないため、常に各ディメンションが何であるかを知る必要があります。

特定のシナリオでデータを構造化するより良い方法があるかもしれませんが、具体的に話す必要があります。いずれにせよ、あなたが与えたコードはうまくいくでしょう。オーバー熟考する

+0

あなたのアドバイスと入力していただきありがとうございますJon。私はちょうど別の問題を来たばかりです、私はvarを使用して多次元配列から配列全体を呼び出すことができますValueAddedArray = RouteArray [88] [0] ;? – TranquilityEden

+1

あなたはそうすることができますが、注意してください。 - ValueAddedArrayはRouteArray [88] [0]への参照になります。もしあなたが値を変更すると、もう一方も変更されます。 – tjp

+0

@tjpもう一度あなたのレスポンスに感謝します。私はあなたが何を言っているのか理解しているかどうかチェックしたいと思います。もし私が次のようなことをするならば:var ValueAddedArray = RouteArray [88] [0];それに続いてValueAddedArray [2] = "NewValue";これにより、ValueAdded [2]とRouteArray [88] [0] [2]の両方に値NewValueが同時に追加されますか?また、ValueAddedArray.clear(); RouteArray [88] [0]インデックス、またはRouteArray全体で保持されている配列だけを空にしますか? – TranquilityEden