質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1025閲覧

javascript 2次元配列

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/06/09 07:58

編集2020/06/09 08:19

javascriptを練習しています。
クリックするとマス目が白←→黒になるプログラムの一部でわからない事があります。

javascript

1<script> 2 var m=new Array(16); 3 4 var x,y,n=0,tag=""; 5 for (y=10;y<=160;y+=10){ 6 for (x=10;x<=160;x+=10){ 7 tag+="<img id='square"+n+"' src='block.png' style='position:absolute;left:"+x+"px;top:"+y+"px' onClick='draw(event)' />"; 8 n++; 9 } 10 } 11 document.getElementById("canvas").innerHTML=tag; 12 for (y=0;y<16;y++){ 13 m[y]=new Array(16); 14 for (x=0;x<16;x++){ 15 m[y][x]=0; 16 } 17 } 18 19</script>

m[y]=new Array(16);

で、16×16の2次元配列を作成しているそうですが、いまいち仕組みがわかりません。

また

m[y]=new Array(16); 以外に別のわかりやすい書き方はありますでしょうか?

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2020/06/09 08:11

m の初期化が抜けてるような?
退会済みユーザー

退会済みユーザー

2020/06/09 08:17

回答ありがとうございますm(__)m 参考書からのコピペですが、参考書では、 var m=new Array(16); とありました。後で訂正しますね。
guest

回答2

0

ベストアンサー

js

1for (y=0;y<16;y++){ 2 m[y]=new Array(16); 3}

↑をforを使わずに書くと↓こうなります。

js

1 m[0]=new Array(16); 2 m[1]=new Array(16); 3//... 4 m[15]=new Array(16);

↑これは、大雑把に言うと↓このような意味です。

js

1 m=[ 2 new Array(16), 3 new Array(16), 4//... 5 new Array(16), 6 ];

さらに言うと、↑これは、↓このような意味です。

js

1 m=[ 2 [,,,,,,,,,,,,,,,,], 3 [,,,,,,,,,,,,,,,,], 4//... 5 [,,,,,,,,,,,,,,,,], 6 ];

面倒でなければこのように書いてもいいかと思いますが、わかりやすいかどうかは意見の分かれるところでしょう。


そのほか、このような書き方もあります。

js

1Array.from( new Array(16), x => new Array(16) )

わかりやすいかどうかは意見の分かれるところでしょう。

投稿2020/06/09 08:25

Lhankor_Mhy

総合スコア36158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/06/09 08:31

回答ありがとうございますm(__)m いろいろなパターンをありがとうございます! 後で良く見てみます。
guest

0

解決済みですが参考までに…

例えば、マスの数が少なかったらこんな感じで一気に定義してもいいですし

javascript

1var m = [[0,0],[0,0];

ちょっと増えたらこんな書き方もありでしょう

javascript

1var m = new Array(4); 2for (var i=0; i<4; i++) { 3 m[i] = [0,0,0,0]; 4}

これを今回の書き方にすると

javascript

1var m = new Array(4); 2for (var i=0; i<4; i++) { 3 m[i] = new Array(4); 4 for (var j=0; j<4; j++) { 5 m[i][j] = 0; 6 } 7}

たぶん器を用意する部分と値を設定する部分がいっしょになってるので、なかなかイメージしずらくなっているのかなあって気がします。

投稿2020/06/09 11:00

takasima20

総合スコア7460

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問