1. ホーム
  2. javascript

Array.prototype.fill()でオブジェクトが参照渡しとなり、新規インスタンスにならない

2023-07-28 17:31:21

質問

私は少し遊んでいて、長さ x で初期化され、その配列のすべての要素が値 y :

var arr = new Array(x).fill(y);

これは y オブジェクト . ということは、もし y がオブジェクトである場合、以下のようになります。

var arr = new Array(2).fill({});
arr[0] === arr[1]; //is true;
arr[0].test = 'string';
arr[1].test === 'string'; //is also true;

fill-functionを使用している間、各要素に対して新しいオブジェクトを作成することを記述する方法はありますか?それとも、ループに変換すればよいのでしょうか?

どのように解決するのですか?

まず fill という配列に任意の値(例えば undefined のように)、そして、その後に map :

var arr = new Array(2).fill().map(u => ({}));

var arr = new Array(2).fill().map(Object);