2016-08-01 11 views
0

配列のサイズに合わせてオブジェクトのセットを作成します。ループでは、私は、このようなように、これらのオブジェクトを定義します:JavaScriptの可変オブジェクト宣言名

var playersNames = ["name1", "name2", "name3"]; 

for(i=0; i < playersNames.length; i++){ 
    var player[i] = new player(); 
    player[i].name = playersNames[i]; 
} 

をしかし、JavaScriptがvar player[i]が好きではありません。

どうにかできますか?

答えて

1

その後、push()それへの、最初の配列を作成します。

var playersNames = ["name1", "name2", "name3"]; 
 
var player = []; 
 
function Player() { 
 
\t 
 
} 
 

 
for(i=0; i < playersNames.length; i++){ 
 
    player.push(new Player()); 
 
    player[i].name = playersNames[i]; 
 
} 
 
      
 
console.log(player);

+1

エクセレントは、完璧に動作します!ありがとう。 – seanbulley

1

をあなたがすることができます事前に割り当てるプレーヤーの配列:

var playersNames = ["name1", "name2", "name3"]; 
 
var nnames = playersNames.length; 
 

 
var player = new Array(nnames); 
 

 
for(i = 0; i < nnames; i++){ 
 
    player[i] = new Player(); 
 
    player[i].name = playersNames[i]; 
 
}

+0

あなたが何か答えを与えたいのであれば、投稿する前にその答えを確認してください。さもなければ、誰もその答えから助けを得られず、答えは過小評価されます。 –

+0

私の答えに何が間違っているのかを教えてもらえますか? –

1

それとも、このeasily-

var playersNames = [ 
 
\t \t  "name1", 
 
\t \t  "name2", 
 
\t \t  "name3" 
 
\t \t ]; 
 
var players = []; 
 

 
for(i=0; i < playersNames.length; i++) 
 
{ 
 
\t players.push(playersNames[i]); 
 
} 
 

 
console.log(players);

+0

'player'から' players'に更新されました –

0

使用mapような何かすることができます

var players = playersNames.map(playerName => { 
    var myPlayer = new player(); 
    myPlayer.name = playerName; 
    return myPlayer; 
}); 

これはあなたのplayers配列を先行宣言し、手間をかけて、それを一つ一つをプッシュする必要がなくなります。基本的には、mapはあなたのために働きます。

あなたは、パラメータとして名前を取るためにあなたのコンストラクタを再設計した場合、それがさらにコンパクトです:

var players = playerNames.map(playerName => new player(playerName)); 
関連する問題