2016-04-26 6 views
1

私は2048をjavascriptで再作成しようとしていますが、何らかの問題があります。基本的には、私の考えは、座標とタイルで満たされているかどうかのブール変数を取る16オブジェクトの配列としてグリッドを作成することでした。私は、ブロックの割り当てられた値を印刷しようとすると、 javascriptでオブジェクトの配列を作成し、次にプロパティーを取得する

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)); 

     } 
    } 
} 

はしかし、それはブロックの前に新しいを追加してくれ

"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

ブロックのようにコンベンション関数の名前を大文字で大文字にする。ダブルネームの割り当てのポイントは何ですか? – Redu

+0

それを大文字にしました。ダブルネームの割り当てはどういう意味ですか?変数と関数 "ブロック"の両方を呼び出しますか? – tag00

+0

はい、これは一般的な方法として行う必要はありません。あなたの指のために良い。 – Redu

答えて

4

あなたが持っているコードでnewキーワードを使用し、またあなたがブロック配列は、それをチェックアウトへのアクセス方法を変更する必要があります:あなたがすべき以下の回答に加えて

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

シンプルを与え、彼らが

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

未定義であると言います。

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

作業例:http://jsbin.com/filerocoso/1/edit?js,output

は、変数の使用にアクセスするには:

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

編集:ジョーダンはそれに私を打つ、また例を更新し、配列プロパティの正しいアクセスを示しています。

関連する問題