teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤字修正

2020/02/13 07:42

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37481

answer CHANGED
@@ -36,8 +36,8 @@
36
36
  const old_ = array_[3];
37
37
 
38
38
  for (let i = 0; i <= 5; i++) {
39
- if (array[i] === undefined) array[i] = [];
39
+ if (array_[i] === undefined) array_[i] = [];
40
- array[i].push('add');
40
+ array_[i].push('add');
41
41
  }
42
42
 
43
43
  console.table(old_ === array_[3]); // true

1

質問クローズを受けて追記

2020/02/13 07:41

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37481

answer CHANGED
@@ -7,4 +7,38 @@
7
7
  for (let i = 0; i <= 5; i++) {
8
8
  ( array[i] || ( array[i] = [] ) ).push('add');
9
9
  }
10
+ ```
11
+
12
+ ###質問クローズを受けて追記
13
+
14
+ jun68yktさんなどが挙げたスプレッド演算子を使って代入する方法は、破壊的なので、元のコードと微妙に振る舞いが違います。
15
+ あまり変わったことをしていなければ問題ないとは思いますが、お気を付けください。
16
+
17
+ ```js
18
+ const array = [];
19
+
20
+ array[0] = ['0'];
21
+ array[1] = ['1'];
22
+ array[3] = ['3'];
23
+ const old = array[3];
24
+
25
+ for (let i = 0; i <= 5; i++) {
26
+ array[i] = [...(array[i] || []), 'add'];
27
+ }
28
+
29
+ console.table(old === array[3]); // false
30
+
31
+ const array_ = [];
32
+
33
+ array_[0] = ['0'];
34
+ array_[1] = ['1'];
35
+ array_[3] = ['3'];
36
+ const old_ = array_[3];
37
+
38
+ for (let i = 0; i <= 5; i++) {
39
+ if (array[i] === undefined) array[i] = [];
40
+ array[i].push('add');
41
+ }
42
+
43
+ console.table(old_ === array_[3]); // true
10
44
  ```