tamakipedia

フロントエンドエンジニア。Typescriptもう特訓中です。一日の振り返りや学んだことをちょっとずつ吐いています。

多次元配列の中身をごっそり書き換えたい!

最近テトリス作りを行なっています。今日どはまりした多次元配列の入れ替えがやっと理解できたので今のうちにメモしておきます。

 

--- 多次元配列

多次元配列とは二次元以上の配列のこと。

[1,2,3,4]

これが一次元配列です。

[[1,2],[3,4]]

これが二次元配列です。

[

[[1,2,3],[1,2,3],[1,2,3]],

[[1,2,3],[1,2,3],[1,2,3]],

[[1,2,3],[1,2,3],[1,2,3]]

]

これが三次元配列です。

 

イメージしやすいものを用意しました、、、

 

f:id:okinawanpizza:20200104200517p:plain

二次元!

テトリスは二次元配列です。

そして、、、、

f:id:okinawanpizza:20200104201012p:plain

三次元!!

ルービックキューブが三次元配列!

どうでしょうか、イメージつきますかね笑

 

---  二次元配列を入れかえる(??)

今日は別のテトリミノを表示する部分を作ってみました。

テトリミノを表示する配列

[ [0,1,0,0],

[1,1,1,0] ]          // T字のテトリミノです

を別の二次元配列に組み替えたいわけです。

ちなみにテトリスのブロックのことをテトリミノというそうです笑可愛い名前

 

 

--- 配列の中身をループ文で出して、一つずつ突っ込む

f:id:okinawanpizza:20200104202839p:plain

 

悩んだ割には思ったより簡単だった、、

 

--- 失敗例

push してslice 

 

この場合だとpush した段階で、三つめの配列の中に、二つめの配列全部入っちゃうのでダメでした。

[ [0,1,0,0],

[1,1,1,0],

[[1,1,1,1],[0,0,0,0] ]

こんな感じですね笑

 

他にもfor 文を一回だけ回して、[1,1,1,1] という配列ごと置き換えようとするもダメ、、、

 

思ったより解明が難しかったです。

 

 

 

--- 余談ですが、、

バイト二連勤の間、家に帰らずに近くのカフェにこもることで三時間ほど短縮できることに気づき、今日実行してみたのですが

「、、、めちゃくちゃいい!!!」

もはやコードを強制的にかけるので時間短縮&自分を強制させられるので案外ありですね笑

いい気づきです笑

 

お疲れ様でした。