2016-05-04 5 views
0

オブジェクトを配列に追加するためのより良い解決策を見つけることを試みています。ボックスオブジェクトは、別のファイルからのものと異なるファイルに一度にアレイ一行にプッシュされ、例えば:別のファイルから別のファイルの配列にオブジェクトを追加する

function loadCols(){ 
collisionPoints.push(box1); 
collisionPoints.push(box2); 
collisionPoints.push(box3); 
collisionPoints.push(box4); 
collisionPoints.push(box5); 
collisionPoints.push(box6); 
collisionPoints.push(box7); 
collisionPoints.push(box8); 
collisionPoints.push(box9); 
collisionPoints.push(box10); 
}; 

Iループに使用して、文字列"box" + iを連結しようとしているが、これは」なかったの仕事。 オブジェクトを作成したファイルの配列にそれらを追加しようとしましたが、配列をメインファイルに渡す方法を見つけることができませんでした。これは機能しますが、私はよりクリーンなソリューションがあることを望んでいます。どんな助けでも歓迎されるでしょう。

+1

__Syntax:__ 'arr.push(要素1、...、elementn)のエレ' .push'が '' arguments' – Rayon

+1

'collisionPoints.push(BOX1、BOX2、N 'の数を受け入れることができます' ..だから.....、boxN); ' – Rayon

答えて

1

あなたはウィンドウを使用して、それの文字列名から変数を取得することができますオブジェクト。また

function loadCols(){ 
    for (var i=1; i<=numberOfBoxVars; i++) { 
     collisionPoints.push(window["box" + i]); 
    } 
} 

あなたの変数がクロージャ内で定義されていると、あなたのloadCols機能は同じクロージャ内で定義されている場合、あなたは、ウィンドウオブジェクトの代わりに「この」キーワードを使用することができます。

(function() { 
    var box1 = "1"; 
    var box2 = "2"; 
    ... 

    function loadCols(){ 
     for (var i=1; i<=numberOfBoxVars; i++) { 
      collisionPoints.push(this["box" + i]); 
     } 
    } 
}); 
+0

これは完璧に働いたおかげで男。 – user3355961

0

あなたはちょうどこの行うことができますJSON配列内のすべてのオブジェクトを送信する場合:

var array = JSON.parse(boxesarray); 
for(var i = 0;i< array.length; i++) { 
    collisionPoints.push(array[i]); 
} 

をしかし、これが不可能な場合には、配列内のすべてのボックスを送信するあなたを必要とするにように、コードを投稿してくださいそれはなぜではなく、私は私のanwserを適応させます。

+0

javascriptファイルの読み込み順序が違いますか?ボックスオブジェクトを作成するファイルは、最後にロードされるメインプログラムの前にロードされます。 – user3355961

+0

これはオブジェクトファイルの最後に作成され、メインファイルからアクセスできますか? – user3355961

+0

私は正しいことを理解すれば、箱をつくる.jsと、それを配列に格納するものがありますか?私はこれに基づいて詳細な答えを与えることができます。 – namlik

1

私が正しく理解していれば、動的変数for -loopに使用する方法を探しています。その上box1とは、グローバル変数であれば、あなたはwindowのプロパティとしてそれらにアクセスすることで、動的にそれらを得ることができます。

window['box'+i] 

はこちらをご覧ください:Use dynamic variable names in JavaScript

関連する問題