私は結果を2次元配列に出力し、各要素に1を加えるという問題に取り組んでいます。Array.prototype.fill()はfillとは別のものです
私はテストケースを作成することができます。次のように私は、行くように私は配列を埋める場合:
var a = [[], [], [] ,[] ,[], []];
var d1, d2;
for (d1 = 0; d1 < 6; d1++) {
for (d2 = 0; d2 < 6; d2++) {
a[d1][d2] = (a[d1][d2]) ? (a[d1][d2]) + 1 : 1;
}
}
私はarray.prototype.fill(使用してアレイを事前移入場合、すべての値が、しかし1ある2次元配列を取得します)、次のように:
var a = new Array(6).fill(new Array(6).fill(0));
var d1, d2;
for (d1 = 0; d1 < 6; d1++) {
for (d2 = 0; d2 < 6; d2++) {
a[d1][d2] += 1;
}
}
私は6次元の完全な2D配列を取得します。私がa[d1][d2] += 1
を古いa[d1][d2] = (a[d1][d2]) ? (a[d1][d2]) + 1 : 1;
と置き換えても(0と未定義の両方が偽であるので、まだ動作するはずです)、私はまだ6を取得します。
私の知る限りでは、コードは各要素をループして前の値に1を加えるだけです。要素に何度も触れてはならないので、すべて1にする必要があります。私が事前に配列を埋めるかどうかは重要ではありません。
どこが私の理解に失敗しましたか?
ポップクイズを:どのように多くの新しい配列オブジェクトの行を行い、 '新しいアレイ(6).fill(新しいアレイ(6).fill(0) ); '作成する? (ヒント:行に表示される 'new Array'呼び出しの数と同じです。)(ヒント#2:7未満です':) ') – apsillers