追加された2つの変数をローカル変数に変換するのに問題があります。これは私の元のコードです。
var mycars = new Array();
mycars[4]=(aa+","+bb+","+cc+","+dd+","+ee+","+ff+","+gg+","+hh);
mycars[5]=(ii+","+jj+","+kk+","+ll+","+mm+","+nn+","+oo+","+pp);
var car4 = mycars[4].toString();
var car5 = mycars[5].toString();
var new_data4 = car4.split(",");
var new_data5 = car5.split(",");
var final_data = "new_data";
for(var i = 4; i < 6 ; i++){
var c = final_data + i;
alert(c[i]);// the result is d,a(the local array n,e,w,_,d,a,t,a)
}
この結果が欲しいのはee、nn
c
配列ではありません。文字列です。つまりalert(c[i])
、文字列new_data4
との5番目と6番目の文字をnew_data5
それぞれ返します。
c
変数名として使用する場合、およびこれらの変数がグローバルである場合は、のような要素にアクセスできますwindow[c][i]
。ただし、これはローカル変数では機能しません。名前でローカル変数にアクセスする標準的な方法はありません。
ただし、すべての変数をグローバルにする前に、名前で変数にアクセスする必要はまったくありません。それらが配列内にある場合は、番号でアクセスできます。
これを見て。
var new_data = [];
new_data[4] = [aa, bb, cc, dd, ee, ff, gg, hh];
new_data[5] = [ii, jj, kk, ll, mm, nn, oo, pp];
for(var i = 4; i < 6 ; i++){
alert(new_data[i][i]);
}
ちなみに、値を連結して結果を文字列化してから、もう一度分割することで、これらすべてがどのようになくなったかに注目してください。それは必要ありません-それは基本的に忙しい仕事です。値がすでに入力されている配列を作成できます。そのような配列は、信頼できるデータソースである必要があります。文字列が必要な場合は、配列から作成します。その逆ではありません。
書くコードの量を半分にするだけでなく、これにより、すべてを台無しにすることなく、名前にコンマを含めることができます。(現在、名前にコンマが含まれている場合は、その名前とその後のすべてを破棄します。)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加