Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

JavaScript Multi-dimensional Array;

$
0
0

JavaScript (Node.js) で AtCoderの問題を解いていて困ったが、現時点で日本語の情報がなかったので後学者のためのメモ。
そもそもJavaScriptでAtCoderやってる人自体少ないので需要はあまりなさそうですが、興味ある人だけ読んでください。

例えば a = [[0, 0], [0, 0]]というArrayを作って、a[0][0] = 1とupdateしたいとする。

まずは失敗例

vara=newArray(2).fill(newArray(2).fill(0));a[0][0]=1;console.log(a);// [ [ 1, 0 ], [ 1, 0 ] ]// a[0], a[1] は呼び出すメモリ上でidが"完全に同じ"なので、a[0][0]とa[1][0]も単に"値が等しいのではなく全く同じもの"になる。

これは Python3でいうところの

a=[[0]*2]*2

と同じ。
これを解決するには、
a[0], a[1]をそれぞれ別に作成する必要がある。
Python3だと、

a=[[0]*2for_inrange(2)]

と書けばよかったが、JavaScriptだとちょっと大変。
いろいろ試して、一応以下のように書くと良いことが解った。

vara=newArray(2);for(vari=0;i<2;i++){a[i]=newArray(2).fill(0);}a[0][0]=1;console.log(a);// [ [ 1, 0 ], [ 0, 0 ] ]

Viewing all articles
Browse latest Browse all 8691

Trending Articles