公式アカウントからの投稿が始まります

javascript初心者です。

オセロを作ろうとしていますが、javascriptには二次元配列がないらしくて困っています

const FieldWidth = FieldHeight = 8 ;
const Field = [FieldHeight , FieldWidth] ;
const CellType = ["□","●","○"] ; //空、黒、白石

for( let y = 0 ; y < FieldHeight ; y++){
for( let x = 0 ; x < FieldWidth ; x++){
Field[ y , x ] = CellType[0];
}
}

VBやCでは、これでオッケーなのですが、javascriptではどう記述すればよいですか?

できればループで書きたいので、下記のようにすべての値を手入力するのは避けたいです。
const Field = [
[0,0,0,0,0,0,0,0],
//以下略
];

質問者からの補足コメント

  • >VBやCでは、これでオッケーなのですが

    すみませんオッケーじゃないですね
    Field[][]ですね。

    それはさておき、javascriptで教えてほしいです

      補足日時:2019/02/25 00:17

A 回答 (3件)

JSの2次元配列は配列の配列というのは


流石に気づいてますよね。
後はArrayコンストラクタの使い方を習得すれば
幸せになれます。
    • good
    • 0

こんにちは



>javascriptには二次元配列がないらしくて困っています
javascriptの変数はオブジェクトや関数(もオブジェクトでが)を格納できますので、一次元配列の各要素に配列を格納すれば二次元化できます。また、これを繰り返せば多次元配列も可能になります。

あるいは、添え字を読み替えることで、一次元配列に読み替え得t格納する工夫もできるでしょう。
二次元の添え字をi、jとして、実際に記憶する一次元配列の添え字をnとするなら
 n = i * jMax + j (uMaxは添字jの最大値+1)
などの方法で対応することも可能でしょう。
(これも概念として、多次元化が可能です)
変換関数(fn)を作成しておけば、
 array.getValue = function(i, j){ return array[fn(i, j)]; }
みたいなイメージで使用することもできるかと。

さて、
>const Field = [
>[0,0,0,0,0,0,0,0],
>//以下略
>];

>Field[][]ですね。

ということを理解なさっているのなら、構造的にどうなっているのかわかるでしょうから、、単純にループさせれば良いだけだと思いますけれど?
let Field = [];
for(i=0; i<FieldHeight; i++){
 Field[i] = [];
 for(j=0; j<FieldWidth; j++){
  Field[i][j] = CellType[0];
 }
}

単に、同じ初期値(文字列)を代入するだけなら、
let Field = [];
for(i=0; i<FieldHeight; i++){
 Field[i] = CellType[0].repeat(FieldWidth).split("");
}
でも宜しいかと。
    • good
    • 0

C にも「2次元配列」は存在しね~っす.



そして検索すれば出てくるという....
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!