2016-12-20 6 views
0

私は自分のアプリのチャートを作っています。私は動的変数に問題があります。それは、このように見えることがある変数を動的に配列に挿入する

var trace1 = { 
    x: [1, 2, 3, 4], 
    y: [10, 15, 13, 17], 
    type: 'scatter' 
}; 

[ 
var trace1 = { 
    x: [1, 2, 3, 4], 
    y: [10, 15, 13, 17], 
    type: 'scatter' 
}, 
var trace1 = { 
    x: [1, 2, 3, 4], 
    y: [10, 15, 13, 17], 
    type: 'scatter' 
} 
] 

しかし、それはダイナミックでなければなら:私は量をサーバーに要求されますように、チャート上の1つのラインの変数が見えますライン。そして、問題は今サーバが言うように多くの変数をtrace[i]にすることです。例えば、応答が3であれば、それは三つの変数作ることがあります。

trace1 = {}, trace2 = {}, trace3 = {} 

をそして、それは内部の配列である必要があります:

[trace1 = {}, trace2 = {}, trace3 = {}] 

私の質問がある:何をすることも可能ですこのようなもの?例えば配列内に3つの変数を作るループ?

これが私の目標です:

[trace1 = {}, trace2 = {}, trace3 = {}] 
+0

名前を付ける必要がありますか?そうでなければ、オブジェクトを配列に挿入するだけで動作します。それ以外の場合は、Objectを代わりに使用し、キーを動的に生成し、オブジェクトの配列として値を設定することができます。 – Abdul

+0

@Abdul凡例には各データ行の名前が表示されるため、名前を付ける必要があります。 –

+1

配列には「変数」は含まれていません。彼らは "値"を含んでいます。インデックス(0,1,2 ...)を一種の名前と見なさない限り、値には名前はありません。 –

答えて

0

あなたは配列と同じようにあなたは、オブジェクトの代わりに、配列を使用して、キーを反復処理することができます

traces = {}; 
 

 
for(var i = 1; i <= 10; i++) { 
 
\t var thisTrace = { 
 
     x: [1, 2, 3, 4], 
 
     y: [10, 15, 13, 17], 
 
     type: 'scatter' 
 
    }; 
 

 
    traces["trace" + i] = thisTrace; 
 
} 
 

 
console.log(traces); // all the traces 
 
console.log(traces["trace1"]); // access the "trace1" object 
 

 
for (var traceName in traces) { 
 
    // traceName is the key 
 
    // traces[traceName] is the trace object 
 
}

0

あなたは何を意味するのかはっきりしませんが、望む結果を参照するようなオブジェクトが必要で、変数がすでに定義されていれば、sometのように:

var nbr_of_objects = 3; 
var traces_result = {}; 

for(var i=1;i<=nbr_of_objects;i++){ 
    traces_result["trace"+i] = window["trace"+i]; 
} 

希望このヘルプ。

var trace1 = {x: [1],y: [10],type: 'scatter'}; 
 
var trace2 = {x: [1, 2],y: [10, 15],type: 'scatter'}; 
 
var trace3 = {x: [1, 2, 3],y: [10, 15, 1],type: 'scatter'}; 
 

 
var nbr_of_objects = 3; 
 
var traces_result = {}; 
 

 
for(var i=1;i<=nbr_of_objects;i++){ 
 
    traces_result["trace"+i] = window["trace"+i]; 
 
} 
 

 
console.log(traces_result);

0

ない適切なソリューション

あなたがオブジェクトに格納することができるので、あなたは、あなたがアクセスすることができ、配列のキー

var traces = {}; 
for(var i=0; i<10; i++){ 
    traces["trace"+(i+1)] = { 
    x: [1, 2, 3, 4], 
    y: [10, 15, 13, 17], 
    type: 'scatter' 
    } 
} 

として名を設定することができます配列のインデックスがtraces["trace1"]またはの変数かのようにそれを反復する:

for(var key in traces){ 
    console.log(traces[key]) 
} 

適切なソリューション

var traces = []; 
for(var i=0; i<10; i++){ 
    traces.push({ 
    name:"trace"+(i+1), 
    x: [1, 2, 3, 4], 
    y: [10, 15, 13, 17], 
    type: 'scatter' 
    }); 
} 

あなたは、一致するトレースnameプロパティを探しての代わりに、配列のキーとしてその名を使用して、配列を反復処理しなければならないとfor like likeを使用してください:

for(var i=0; i < traces.length; i++){ 
    console.log(traces[i].name); 
} 
+1

彼はそれらに名前をつける必要があります – Abdul

+0

これは今、ありがとう –

+0

オブジェクトの上のループのための反パターンの使用であり、プロパティであるかどうかを確認するhttp://stackoverflow.com/questions/684672/how-do-i -loop-through-or-enumerate-a-javascript-object –

関連する問題