MrYanDao:
私は、アレイ(基本的には2D配列)の配列を作成するために必要なHackerrankに質問をしようとしていました。
私のゴーへの1つのライナーはされるだろうconst counter = new Array(4).fill([])
が、私はそれが2次元配列を作成することを実現しますが、配列に任意の関数を適用することは、すべての要素に適用させるような。
let count = new Array(4).fill([])
count[0].push("Test")
console.log(JSON.stringify(count))
結果は、これらの内部「テスト」と同じ値を有する全てのサブアレイであろう。
最終的な解決策は次のようになります。
let count = Array.from(Array(4), () => new Array());
count[0].push("Test")
console.log(JSON.stringify(count))
私は期待どおりに働いていない理由を聞いても?
セバスチャンカツマレク:
ので.fill()
、新しいアレイのすべてのインデックスにそのオブジェクトへの参照をコピー、それはオブジェクトの場合は、引数を取ります。実際には以来[]
オブジェクトである、あなたの新しい配列が同じ配列への参照で満たされてしまいます。
以下からのドキュメント:
最初のパラメータがオブジェクトである場合、それはその参照をコピーして、そのオブジェクトへの参照を持つ配列を記入します。