2017-04-19 73 views
2

我試圖用相同的對象類型(房間)填充數組(房間)。使用相同的對象模型填充數組

這工作得很好:

var rooms = new Array(10); 

for (var i=0; i<10; i++){ 
    rooms[i] = new room(); 
} 

難道沒有其他需要的代碼只有一行做同樣的事情,任何其他方法?

我試着:

var rooms = new Array(10).fill(new room()); 

但所述陣列的每個框包含相同的對象(相同的附圖)。

謝謝。

+1

可能是重複的:http://stackoverflow.com/questions/40723361/new-array-fillobject-does-not-create-new-instances-of-object [新陣列的 –

+0

可能的複製(\ _)。fill(object)不會創建新的對象實例](http://stackoverflow.com/questions/40723361/new-array-fillobject-does-not-create-new-instances-of-object) – evolutionxbox

回答

1

您應該使用map方法以便擁有不同的對象。

var rooms = new Array(10).fill().map(function(){ 
    return new room(); 
}); 
1

This將工作中(因爲ES6):

Array(10).fill().map((e,i)=>new room()); 
1

這樣做將是另一種很好的方法;

var rooms = Array.from({length:10}, _ => new Room()); 
rooms[0] === rooms[1] // <- false