回答編集履歴
2
質問に対する回答が明確になるよう修正しました。
test
CHANGED
@@ -1,8 +1,18 @@
|
|
1
|
-
|
1
|
+
> なぜ②の時点でarray[1]が既にソートされているのでしょうか?
|
2
2
|
|
3
|
-
例えば、コンソールで1行づつ実行して確認すれば、期待しているような結果が得られるはずです。
|
4
3
|
|
4
|
+
|
5
|
+
ブラウザが②を実行しているとき、`array[1]`はまだソートされていませんが、あなたが②の結果を確認しているのは、おそらくソートされた後です。きっと、①の結果も②と同じ状況になっているでしょう。
|
6
|
+
|
7
|
+
|
8
|
+
|
5
|
-
|
9
|
+
`console.log`は、ブラウザのコンソールに`array[1]`を表示します。
|
10
|
+
|
11
|
+
表示された`array[1]`は「出力された当時の`array[1]`」ではなく、「いまの`array[1]`」です。
|
12
|
+
|
13
|
+
「出力された当時の`array[1]`」を出力するには、↓のコードのようにJSONの文字列にしてしまうか、`array[1].slice()`のようにしてコピーをつくりましょう。
|
14
|
+
|
15
|
+
|
6
16
|
|
7
17
|
```javascript
|
8
18
|
|
@@ -18,19 +28,13 @@
|
|
18
28
|
|
19
29
|
```
|
20
30
|
|
21
|
-
おそらく、あなたは②の結果をブラウザのコンソールで確認したのではないでしょうか。
|
22
31
|
|
23
|
-
そして、その確認を行ったのは`array[1].sort()`がすでに実行されたあとではありませんか?
|
24
32
|
|
25
|
-
|
33
|
+
また、コンソールで1行づつ実行して確認しても、期待しているような結果が得られるはずです。
|
26
34
|
|
27
35
|
|
28
36
|
|
29
|
-
|
37
|
+
---
|
30
|
-
|
31
|
-
この`array[1]`は「出力された当時の`array[1]`」ではなく、「いまの`array[1]`」です。
|
32
|
-
|
33
|
-
「出力された当時の`array[1]`」を出力するには、上のコードのようにJSONの文字列にしてしまうか、`array[1].slice()`のようにしてコピーをつくりましょう。
|
34
38
|
|
35
39
|
|
36
40
|
|
1
状況を再現するコードと画像を追加しました。
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
これは「②の結果をどのように確認したのか」
|
1
|
+
これは「②の結果をどのように確認したのか」が重要です。
|
2
2
|
|
3
3
|
例えば、コンソールで1行づつ実行して確認すれば、期待しているような結果が得られるはずです。
|
4
4
|
|
@@ -28,6 +28,32 @@
|
|
28
28
|
|
29
29
|
あなたが結果を確認しているとき、ブラウザのコンソールは`array[1]`を表示しています。
|
30
30
|
|
31
|
-
この`array[1]`は「出力された当時の`array[1]`」ではなく、「
|
31
|
+
この`array[1]`は「出力された当時の`array[1]`」ではなく、「いまの`array[1]`」です。
|
32
32
|
|
33
|
-
「出力された当時の`array[1]`」を出力するには、上のコードのようにJSONの文字列にしてしまうか、`array[1].slice()`のようにコピーをつくりましょう。
|
33
|
+
「出力された当時の`array[1]`」を出力するには、上のコードのようにJSONの文字列にしてしまうか、`array[1].slice()`のようにしてコピーをつくりましょう。
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
以下のコードで同じような状況を再現できます。
|
38
|
+
|
39
|
+
```javascript
|
40
|
+
|
41
|
+
var object = {a: 123, b: 123, c: 123};
|
42
|
+
|
43
|
+
console.log(object);
|
44
|
+
|
45
|
+
object.a = 456;
|
46
|
+
|
47
|
+
object.b = 456;
|
48
|
+
|
49
|
+
object.c = 456;
|
50
|
+
|
51
|
+
console.log(object);
|
52
|
+
|
53
|
+
```
|
54
|
+
|
55
|
+
ブラウザのコンソールに2回同じオブジェクトを出力します。それぞれ、クリックして中を確認してください。中身は同じになっています。
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
![イメージ説明](8a8a25afcc9595febdd36a7c7be2c7e3.gif)
|