2

forループ内のjsで動的変数名を作成する必要があります

var counter = 0;
for(i=0; i<location.length; i++) {
   ...
   var "marker_" + counter = new google.maps.Marker({

しかし、変数marker_0、marker_1、marker_2、...があると予想したとき、このエラーが発生しました

Error: SyntaxError: missing variable name
Source Code:
          var "marker_" + counter = new google.maps.Marker({ 
4

3 に答える 3

11

配列を使用します。

var marker = [];

for (i=0; i < location.length; i++) {
   marker[counter] = new google.maps.Marker({
于 2013-01-21T16:24:25.540 に答える
4

さて、ここでは「配列を使用する」が間違いなく正しい答えですが、動的変数が本当に必要な場合は、それらのスコープを決定する必要があります。デフォルトは次のようwindowになります。

var counter = 0;
for(i=0; i<location.length; i++) {
   ...
   window["marker_" + counter] = new google.maps.Marker({

これは、同じ角括弧表記でアクセスできるようになりました

window["marker_0"]...

またはドット表記

window.marker_0
于 2013-01-21T16:26:25.200 に答える
0

この質問は重複ターゲットとして使用されるため:

アクセスしたい情報が数値でキー付けされている場合は、配列を使用することをお勧めします。そうでない場合は、次の 2 つのオプションがあります。

  1. オブジェクトと動的プロパティ アクセスを使用する

  2. Map(ES2015+)を使用

オブジェクトの使用

ブラケット表記を介して文字列 (ES2015+ ではシンボル) を使用してオブジェクトのプロパティにアクセスできるため、オブジェクトに情報を格納して、後で文字列/シンボルを使用してアクセスできます。

var theData = Object.assign(Object.create(null), {
    x: "ecks",
    y: "why"
});

var key = Math.random() < 0.5 ? "x" : "y";
console.log("key = " + key + ", theData[key] = " + theData[key]);

地図の使用

文字列やシンボルをキーとしてもオブジェクトの代わりに Map を使用できますが、オブジェクトとは異なり、Map キーは任意の JavaScript 値にすることができます (負の 0 を除く)。

const theData = new Map([
    ["x", "ecks"],
    ["y", "why"]
]);

const key = Math.random() < 0.5 ? "x" : "y";
console.log("key = " + key + ", theData.get(key) = " + theData.get(key));

この例では文字列を使用していますが、Map キーは任意の型にすることができます。Map キーはオブジェクトにすることもできます。

于 2019-06-12T16:41:15.757 に答える