0

forループを使用して変数を宣言してから、 colsrolsが同じかどうかをテストしようとしています。そうである場合は、再帰関数を実行します。しかし、私はjavascriptで行うのに問題があります。誰か助けてもらえますか?

今のところ、と==を比較するcol.1と予想外の変数が表示されますcol.2。ループcol+j内も試してみましたが、forinvalid left-hand side assignment

for (var i = 0; i < 2; i++) {
  var col = {};
  col.i = Math.floor(Math.random() * cols);
  col.i = Math.floor(Math.random() * rows);
}

if (col.1 == col.2 && row.1 == row.2) {
  return this.getRandomBlock();
}
4

2 に答える 2

6
  1. と を宣言する必要がcolありrowます。宣言するのは のみcolです。
  2. colループの外側で宣言しrow、ループの本体が実行されるたびに宣言する必要があります。
  3. col.iに2 回割り当てます。
  4. 書くcol.iと に等しいcol['i']ので、代わりに括弧を使用する必要があります。
  5. オブジェクト ( ) は必要ありません。{}配列 ( []) を使用してください。
  6. col.1it is not legal, number after dot is not legal, use と書くことはできませんcol[1]
  7. と がありますが0、 とはあり1ません。12

.

var col = [];
var row = [];

for (var i = 0; i < 2; i++) {
  col[i] = Math.floor(Math.random() * cols);
  row[i] = Math.floor(Math.random() * rows);
}

if (col[0] == col[1] && row[0] == row[1]) {
  return this.getRandomBlock();
}
于 2012-09-05T05:25:37.773 に答える
0

col変数はループ内で宣言されています。これは、そのfor変数が反復ごとにインスタンス化されたことを意味します。forそのため、ループの最後では、 col変数には1 (col.1)というプロパティが 1 つだけあります。

ループの後、colオブジェクトのプロパティではないcol.2にアクセスしようとしています。また、ループ反復変数 (i または j) を使用して col オブジェクトにアクセスしようとすると、反復後のi または jの値が2になるため、同じ問題が発生します。for

以下を試してみてください。プロのように機能します。

var col = {};
var row = {};
for (var i = 0; i < 2; i++) {
  col.i = Math.floor(Math.random() * cols);
  row.i = Math.floor(Math.random() * rows);
}
if (col.0 == col.1 && row.0 == row.1) {
  return this.getRandomBlock();
}
于 2012-09-05T05:49:40.253 に答える