連想配列を作成し、空の配列を作成してから、(indexName
-> value)のペアを追加しようとしています。
_var arrayName = new Array;
arrayName["indexName"] = value;
// i know i can also do the last line like this:
arrayName.indexName = value;
_
indexName
に値を割り当てるとき、indexName
を動的にし、変数の値にする必要があります。だから私はこれを試しました:
_arrayName[eval("nume")] = value;
_
どこ:
_var var1 = "index";
var var2 = "Name";
var nume = '"' + var1 + var2 + '"';
_
しかし:alert(arrayName["indexName"]);
は「値」を返さない...「未定義」と言う
何か足りないものはありますか? (eval()
に詳しくない);私がしようとしている方法が行き止まりである場合、連想配列値のインデックス名を動的にする別の方法はありますか?
最初は、必要なことを行うために実際の配列オブジェクトが必要だとは思わないが、プレーンなオブジェクトを使用することができる。
変数の値を使用して、ブラケット表記を使用してプロパティにアクセスできます。
var obj = {};
var nume = var1 + var2;
obj[nume] = value;
配列は単なるオブジェクトです。「連想配列」の概念は、単純なオブジェクトを使用することで実現でき、オブジェクトは値を含むプロパティのコレクションです。
真の配列は、数値インデックスを格納する必要がある場合に便利です。インデックスを割り当てるか、length
に値を割り当てると、Push
プロパティが自動的に更新されます。
_arrayName[var1+var2]
_を使用します
_arrayName.var
_は_arrayName["var"]
_と同じであることに注意してください。これは単なる構文上の砂糖です。 2番目の形式は、直面している種類の問題を扱うときに主に使用されます-動的オブジェクトキー、および英数字ではないキー(arrayName[".eval()"]
を考えてください;これはまったく正当なオブジェクトキーであり、 javascript eval()
関数で行います)
それにはオブジェクトを使用します:
_var hash = {}
hash["foo"] = "foo";
hash.bar = "bar";
// This is the dynamic approach: Your key is a string:
baz = "baz"
hash[baz] = "hello";
_
反復するには、jQueryでfor
ループまたは$.each()
を使用します。
私は次のようなことをしました。
let parentArray = [];
let childArray = [1, 2, 3];
childArray.name = 'my-array-1';
parentArray.Push(childArray);
ES6で名前でそれにアクセスするには;
parentArray.filter(x => x.name == 'my-array-1');
実際、配列オブジェクトは不要であり、単純なオブジェクトが仕事をしました。さらに配列は、角括弧obj["var1 + var2"]
内で引用符を使用して、インデックスに関連付けられた値ではなくオブジェクトプロパティの値にアクセスする必要性を導入しました(私は思います)。引用符は"var1 + var2"
を文字列に変換しました。単純なオブジェクトを使用すると、引用符が不要になるため、obj[var1 + var2]
を使用できます。
みんな、ありがとう !
何方をお探しですか variableName = 'bla'+'foo'; arrayRef[variableName] = 'something';
?
それでも、代わりにオブジェクトリテラルを使用する必要があります。 x = {}; x[variablename] = 'blah';
次のように、ここでは同じ 括弧表記 のプレーンオブジェクトが必要です。
var arrayName = {};
arrayName["indexName"] = value;