JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのループ内で動的に変数名を作成する方法

JavaScriptのループ処理の中で、変数名を動的に生成したい場面はよくあります。これを実現するには、現在のスコープにプロパティを追加する方法を使います。プログラムにおける現在のスコープを参照する this を利用することで、以下のように実装できます。

for (var i = 0; i < coords.length; ++i) {
    this["marker" + i] = "add here";
}

このコードでは、ループが1回回るごとに「marker0」「marker1」「marker2」…という名前のプロパティが現在のスコープに順次作成されていきます。

作成した動的変数へのアクセス方法

上記のコードで作成したプロパティは、次のようにして取得できます。

var a = this.marker0;
alert(a);

このコードを実行すると、アラートで「add here」というテキストが表示されます。なお、ドット記法(this.marker0)でもブラケット記法(this["marker0"])でもアクセス可能です。

補足:より安全な代替手段

this を使う方法は手軽ですが、グローバルスコープを汚染してしまう可能性があります。実務では、オブジェクトや配列に格納する方法が推奨されます。

// 配列を使う例
var markers = [];
for (var i = 0; i < coords.length; ++i) {
    markers[i] = "add here";
}

// オブジェクトを使う例
var markerObj = {};
for (var i = 0; i < coords.length; ++i) {
    markerObj["marker" + i] = "add here";
}

配列やオブジェクトに格納しておけば、スコープを意識せずに安全かつ柔軟にデータを管理でき、後からの操作も簡単になります。

  1. JavaScriptで非同期ループを実装する方法をわかりやすく解説

    JavaScriptでは、async/awaitとPromiseを組み合わせることで、各処理の完了を待ちながら繰り返しを実行する「非同期ループ」を実装できます。通常のループ内で時間のかかる処理(API通信やタイマー処理など)を順番に実行したい場合に非常に便利です。以下は、JavaScriptで非同期ループを実装するコード例です。コード例<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="vi

  2. JavaScriptで多次元オブジェクトを作成する方法【サンプルコード付き】

    はじめに JavaScriptでは、オブジェクトのプロパティの値として別のオブジェクトを持たせることで、多次元(ネストされた)オブジェクトを作成できます。この構造を活用すると、氏名や学校情報、住所のように階層関係のあるデータを、直感的かつ整理された形で表現することが可能です。 サンプルコード 以下は、多次元JavaScriptオブジェクトを作成し、コンソールに表示するためのコード例です。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /