質問編集履歴
1
タイトルの修正、補足の追加
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
TypeScriptでオブジェクト配列を作成する方法
|
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
任意のオブジェクトが20個入った配列を作りたいのですが、どう書けば良いのかわかりません。
|
4
4
|
|
5
|
-
オブジェクト配列自体は作成できても、そのオブジェクトへの参照がコピーされてしまうため、配列内の一つのオブジェクトを書き換えると他のオブジェクトも全て書き換わってしまいます。
|
5
|
+
オブジェクト配列自体は作成できても、fillを使用するとそのオブジェクトへの参照がコピーされてしまうため、配列内の一つのオブジェクトを書き換えると他のオブジェクトも全て書き換わってしまいます。
|
6
6
|
|
7
7
|
オブジェクトが書き換わらないオブジェクト配列の作成方法を教えていただきたいです。
|
8
8
|
|
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
// 試したこと①
|
28
28
|
|
29
|
-
const initData_a = Array<Data>(20).fill({ node: [], edge: [] })
|
29
|
+
const initData_a = Array<Data>(20).fill({ node: [], edge: [] }) // オブジェクトへの参照がコピーされる
|
30
30
|
|
31
31
|
initData_a[0].node.push({ id: '0', label: 'something' })
|
32
32
|
|
@@ -34,7 +34,7 @@
|
|
34
34
|
|
35
35
|
// 試したこと②
|
36
36
|
|
37
|
-
const initData_b = Array<Data>(20).fill().map(() => ({ node: [], edge: [] }))
|
37
|
+
const initData_b = Array<Data>(20).fill().map(() => ({ node: [], edge: [] })) // オブジェクトへの参照がコピーされる
|
38
38
|
|
39
39
|
initData_b[0].node.push({ id: '0', label: 'something' })
|
40
40
|
|
@@ -51,3 +51,9 @@
|
|
51
51
|
// ...]
|
52
52
|
|
53
53
|
```
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
### 補足
|
58
|
+
|
59
|
+
[Array.fillの仕様](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/fill)
|