2016-04-26 6 views
1

so versuche ich 2048 in Javascript neu zu erstellen und einige Probleme haben. Grundsätzlich war meine Idee, das Gitter als ein Array von 16 Objekten zu erstellen, die Koordinaten und eine boolesche Variable davon nehmen, ob es mit einer Kachel gefüllt ist oder nicht.Erstellen Sie ein Array von Objekten in Javascript, dann holen Eigenschaften

var blocks = []; 

    var block = function block(xcord, ycord, filled) { 
    this.xcord = xcord; 
    this.ycord = ycord; 
    this.filled = filled; 
}; 

function createGrid(){ 
    for (i = 0; i < 4; i++){ 
     for (j = 0; j < 4; j++){ 

     blocks.push(block(i+1, j+1, false)); 

     } 
    } 
} 

Allerdings, wenn ich versuche, die zugewiesenen Werte der Blöcke zu drucken, es sagt, dass sie nicht definiert sind

console.log(blocks[0].String(xcord)); 

Gibt mir

"TypeError: Cannot read property 'String' of undefined 
    at raqixa.js:180:47 
    at https://static.jsbin.com/js/prod/runner-3.35.12.min.js:1:13891 
    at https://static.jsbin.com/js/prod/runner-3.35.12.min.js:1:10820" 
+0

Zusätzlich zu den unten Antworten sollten Sie Großbuchstaben den Namen der Konstruktorfunktion per Konvention ... wie Block. Plus was ist der Punkt der Doppelnamenvergabe ..? – Redu

+0

Aktivierte es. Was meinst du mit doppelter Namensvergabe? Aufruf sowohl der Variablen als auch der Funktion "Block"? – tag00

+0

Ja, Sie müssen das nicht als allgemeine Praxis tun. Für deine Finger gut. – Redu

Antwort

4

Sie müssen die new Keyword mit dem Code verwenden, die Sie haben, und auch die Art und Weise Sie die Blöcke Array zugreifen ändern, check it out:

Working Example

var blocks = []; 

    var block = function block(xcord, ycord, filled) { 
    this.xcord = xcord; 
    this.ycord = ycord; 
    this.filled = filled; 
}; 

function createGrid(){ 
    for (i = 0; i < 4; i++){ 
     for (j = 0; j < 4; j++){ 
     blocks.push(new block(i+1, j+1, false)); 
     } 
    } 
} 

createGrid(); 
console.log(blocks); 
console.log(blocks[0].xcord); 
1

Einfach vor Block einen neuen hinzuzufügen.

blocks.push(new block(i + 1, j + 1, false)); 

Arbeitsbeispiel: http://jsbin.com/filerocoso/1/edit?js,output

Um den variablen Einsatz zu gelangen:

console.log(blocks); console.log(blocks[0].xcord); // first item in array, property xcord

Edit: Jordon es schlug mich, auch beispielsweise aktualisiert und korrekte Zugang von Array-Eigenschaft zeigen.

Verwandte Themen