0

私は配列を作成しました、

var myBuildingName=['A1','A2','A3','A4'];

ここで、A1、A2、A3、および A4 は、ユーザー入力によって取得された名前です。私は今、A1、A2、A3、および A4 という名前の配列を作成したいと考えています。

私は使ってみました

for(var i=0;i<myBuildingName.length;i++)
{
   var myBuildingName[i]=[];
}

しかし、うまくいきません...

助けてください。

4

5 に答える 5

1

マスターの親オブジェクトを作成し、配列値をオブジェクトのキーとして使用して、それぞれの配列を格納できます。

var myBuildingName=['A1','A2','A3','A4'];

var master = {};

for (var i = 0; i < myBuildingName.length; i++) {
   master[myBuildingName[i]] = [];
}

次に、次のようなデータにアクセスできます。

var a1Array = master['A1'];

また

var firstA1Item = master['A1'][0];
于 2012-04-27T06:43:09.103 に答える
0

実際にそれらの名前で変数を作成したい場合(これはお勧めしません)、それらを作成する必要がありeval()ます。それで:

for(var i=0;i<myBuildingName.length;i++)
{
   eval("var " + myBuildingName[i] + " = [] "); // This creates Array variables called A1, A2 etc.
}

繰り返しますが、上記の方法はお勧めしません。次のように、名前をオブジェクトリテラルのキーとして割り当てる必要があります。

var myStuff = {};
for(var i=0;i<myBuildingName.length;i++)
{
   var myStuff[myBuildingName[i]] = [];
}
于 2012-04-27T06:46:01.670 に答える
0

ローカル変数オブジェクトにアクセスできないため(グローバルコードを除く)、変数宣言以外の方法でプロパティを追加することはできません。グローバルコンテキストのグローバルコードの場合、次のことができます。

var global  = this;
for ( ...) {
  global[myBuildingName[i]] = []
}

ただし、関数コンテキストの関数コードに対してはそれを行うことはできません。jfriend00の回答を参照してください。

于 2012-04-27T06:46:59.923 に答える
0

これがデモです

var myBuildingName = ['A1', 'A2', 'A3', 'A4'];

function arrayFromNames(arr) {
    var store = {};                         //storage for the arrays
    for (var i = 0; i < arr.length; i++) {  //for each in the passed names
        store[arr[i]] = [];                 //add to the storage an array with the corresponding name
    }
    return store;                           //return the storage
}

var nameArrays = arrayFromNames(myBuildingName);  //build using your array

console.log(nameArrays);​

//you now have:
//nameArrays.A1, nameArrays.A2,...
//or
//nameArrays['A1'], nameArrays['A2'],...
于 2012-04-27T06:47:31.673 に答える
0

あなたはたくさんのすばらしい回答を受け取りました。その中の 1 つがあなたのニーズを満たすなら、その回答を受け入れるべきです。これがまだ公開されていないという事実は、あなたが望んでいた方法であなたの質問に完全に答えた人は誰もいないと私たちに思わせます.

その場合、それらの変数をグローバル スコープで使用したかったとしか思えません。

var myBuildingName=['A1','A2','A3','A4'];

for (var i = 0; i < myBuildingName.length; i++) {
   window[myBuildingName[i]] = [];
}

これで、変数に「通常どおり」アクセスできます。

A1.push('test');

注:グローバル空間を決して汚染してはならないため、これは恐ろしい慣習です。

于 2012-04-27T08:03:35.107 に答える