0

変数の値を別の変数の名前にする方法はありますか?たとえば、変数名(value_of_i )は、その反復中の数値「i」になります。以下のwhileループは、私が使用しているものではなく、私が求めているものを説明するためのものです。

var i = 1;
while(i<10)
{

var value_of_i = "This loop has ran " + i + "times.";

i++;
}

最初の反復では、「i」は1に等しいので、変数名を「1」にします。

var 1 = "This loop has ran " + i + "times.";

そして2番目の相互作用:

var 2 = "This loop has ran " + i + "times.";
4

4 に答える 4

2

はい。角かっこ表記の使用(これはMDNのチュートリアルです

これが実用的なフィドルです

名前がに格納されている値であるcontainingObject[stringVariable]プロパティにアクセスしているようなことをするとき。containingObjectstringVariable

// this assumes browser JavaScript where window is the global namespace
// in node.js this would be a little different
var i=0;
while(i<10){ 
   window["counters"+i] = "This is loop has ran " + i + "times.";
   i++;
}
console.log(counters3);

thisウィンドウの代わりに使用したい場合は、厳密モードでは失敗する可能性があります。

上記のMDNリンクからブラケット表記がどのように機能するかについての主な説明は次のとおりです。

JavaScriptオブジェクトのプロパティには、角かっこ表記を使用してアクセスまたは設定することもできます。各プロパティは、それにアクセスするために使用できる文字列値に関連付けられているため、オブジェクトは連想配列と呼ばれることもあります。したがって、たとえば、次のようにmyCarオブジェクトのプロパティにアクセスできます。

myCar["make"] = "Ford";
myCar["model"] = "Mustang";
myCar["year"] = 1969;

変数に格納されている文字列値を使用して、プロパティにアクセスすることもできます。

var propertyName = "make";
myCar[propertyName] = "Ford";

propertyName = "model";
myCar[propertyName] = "Mustang";
于 2013-03-24T18:33:38.613 に答える
0

変数名を数値にすることはできません。有効な名前ではありません。したがってvar 1=""、無効です。

しかし、動的に値を設定するには、

var x = "variablenamehere";

window[x] = "variablevaluehere";

それはと同じです

var variablenamehere

ただし、スコープはグローバル変数としてスコープされ、現在の関数スコープに制限されるのではなく、どこからでもアクセスできます。

于 2013-03-24T18:34:25.310 に答える
0

でインデックス付けされstringsたにあなたを保存してみませんか?arrayi

そうすれば、後で効率的かつ簡単にそれらを参照できます。

var loopI = new Array();

for(var i = 0; i < 10; ++i) {
    loopI[i] = "This loop has ran " + i + "times.";
}
于 2013-03-24T18:35:14.023 に答える
0

これは機能します:

var o = {};
var d = "dog";
for (var k = 0; k < 5; k += 1) {
    o[d+k] = k*100;
}
console.log(o.dog3);  // 300

これはあなたがやりたいことをすることに近づきます:

var N = {};
var M = {};
var i = 1;
while(i<10)
{
    N[i] = "This loop ran " + i + " times.";
    // Or, so you can use dot notation later:
    M['OO'+i] = "This loop ran " + i + " times.";
    // Those are capital O's, not zeros. Numbers won't work.
    i++;
}
console.log(N[3]); // This loop ran 3 times.
console.log(M.OO7); // This loop ran 7 times.

「OO」表記は、他の人があなたのコードを使おうとすると、当惑し、時間を無駄にする可能性があります。しかし、それは彼らにとっても娯楽の源となる可能性があります。これは、白の最初の2つの動きが騎士を連れ出し、それを元に戻すことだった後のチェス盤を思い出させます。ボードは黒が最初に動いたことを示しているようで、誰かが何が起こったのかを言わない限り、構成が違法なプレーがあったことを証明すると延々と主張する人もいます。

于 2014-01-21T22:57:17.260 に答える