2016-08-01 53 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));