2017-07-14 3 views
0

私のコードでは、すべて同じ値で始まり、独立して変化するグローバル変数のリストがあります。それらを定義する30行を使用する代わりに、それらを一緒に定義する方法はありますか? (具体的には、すべてのyの値)の代わりに配列使用できる変数の数千の同じ値で始まるグローバル変数のリストを短くする

var cx1 = 0, 
    cx2 = 100, 
    cx3 = 200, 
    cx4 = 300, 
    cx5 = 400, 
    cx6 = 500, 
    cx7 = 600, 
    cx8 = 700, 
    cx9 = 800, 
    cx10 = 900, 
    cy = 100, 
    y1 = 315, 
    y2 = 685, 
    y12 = 315, 
    y22 = 685, 
    y13 = 315, 
    y23 = 685, 
    y14 = 315, 
    y24 = 684, 
    y15 = 315, 
    y25 = 685, 
    y16 = 315, 
    y26 = 685, 
    y17 = 315, 
    y27 = 685, 
    y18 = 315, 
    y28 = 685, 
    y19 = 315, 
    y29 = 685, 
    y110 = 315, 
    y220 = 685, 
    endx, 
    endy; 
+2

答えはイエスですが、ありません!配列を使用します。範囲を無駄にしないでください。 –

+0

Ahh大丈夫、ありがとう:D – CooperCape

+0

'var y = new Array(" 315 "、" 685 ")'と言ったら、後でそれらを思い出すには?または私はそれに応じて配列を祭壇で変えますか? – CooperCape

答えて

0

var y = [undefined, 315, 685,/*...*/]; 

場合、またはが繰り返し:

var y=",315,685".repeat(10).split(",").slice(1); 

そしてアクセス:

y[1]; //instead of y1 

または代わりにオブジェクト(値よりも、アレイ内の多くのスペースがある場合)を使用する:あなたは本当に、本当に、それを間違った方法を行う上位オブジェクト/配列を取得し、ウィンドウにコピーしたい場合は

var y = { 
1:315, 
2:685, 
12:315, 
22:685, 
13:315, 
23:685, 
14:315, 
24:684, 
15:315, 
25:685, 
16:315, 
26:685, 
17:315, 
27:685, 
18:315, 
28:685, 
19:315, 
29:685, 
110:315, 
220:685 
}; 

を:

Object.keys(y)/* or just y for the array way*/.forEach(function(key){ 
    window["y"+key]=y[key]; 
}); 

alert(y1); 
+0

私はちょうど配列と一緒に行くだろうと思う...非常にきれいに見える変数にアクセスする...感謝:p – CooperCape

+1

@ coopercapeも見てt.j.値が本当に繰り返されている場合、クラウダーは答えます。彼は理由のために非常に多くの担当者を持っています;)...そして、あなたは歓迎します;) –

0

アレイとオブジェクト。

cx = [0,100,200,300]; 
cy = [100]; 
y = { 
    1: 315, 
    2: 685, 
    110: 315 
} 
// etc. 

//to use 
cx[0] == 0 
cx[1] == 100 
y['1'] == 315 
y['110'] == 315 
1

(具体的にすべてのy値)

も、yの値はすべて315であり、奇数のものは、あなたが自分でそれらの配列を構築することができ、すべての685ですので:

var y = []; 
 
for (var i = 0; i < 28; ++i) { 
 
    y[i] = i % 2 === 0 ? 315 : 685; 
 
} 
 
// Then you refer to them by index 
 
console.log(y[0]); // 315 
 
y[0] = 320; 
 
console.log(y[0]); // 320

それはあなたが使用している数字(15、25、110、など)の奇数シリーズとy値を参照することができることが重要だ場合は、それらのオブジェクトプロパティを作ることができます:

var y = Object.create(null); 
 
[1, 2, 12, 22, 23, 14, 24, 15, 25, 16, 26, 17, 27, 18, 28, 19, 29, 110, 220].forEach(function(value, index) { 
 
    y[value] = index % 2 === 0 ? 315 : 685; 
 
}); 
 
console.log(y[22]); // 685 
 
y[22] = 670; 
 
console.log(y[22]); // 670
ES2015 +で

、あなたの代わりにMapを使用することがあります:

const y = new Map(); 
 
[1, 2, 12, 22, 23, 14, 24, 15, 25, 16, 26, 17, 27, 18, 28, 19, 29, 110, 220].forEach((value, index) => { 
 
    y.set(value, index % 2 === 0 ? 315 : 685); 
 
}); 
 
console.log(y.get(22)); // 685 
 
y.set(22, 670); 
 
console.log(y.get(22)); // 670

0

これが達成されるまではあるかもしれません。その後、我々は0を洗うロジックを追加しました。

var vals = [315, 685]; 
 
var arr = {}; 
 
for (var j = 0; j < 12; j++) { 
 
    for (var i = 1; i <= vals.length; i++) { 
 
    var key = (j % 10 == 0) ? i : '' + i + j; 
 
    arr['y' + key] = vals[i - 1]; 
 
    } 
 
} 
 

 
console.log(arr);

関連する問題