回答編集履歴

4

source追加

2019/02/05 07:21

投稿

退会済みユーザー
test CHANGED
@@ -36,4 +36,32 @@
36
36
 
37
37
  最後にコピーするのが手っ取り早いと思います。
38
38
 
39
+ ```javascript
40
+
41
+ methods: {
42
+
43
+ goShuffle() {
44
+
45
+ console.log("実行されているかの確認")
46
+
47
+ for (var i = this.list.length - 1; i >= 0; i--) {
48
+
49
+ // 0~iのランダムな数値を取得
50
+
51
+ var rand = Math.floor( Math.random() * ( i + 1 ) );
52
+
53
+ // 配列の数値を入れ替える
54
+
39
- this.list = [...this.this.list]
55
+ [this.list[i], this.list[rand]] = [this.list[rand], this.list[i]]
56
+
57
+ }
58
+
59
+
60
+
61
+ this.list = [].concat(this.list); // もしくは this.list = [...this.list];
62
+
63
+ }
64
+
65
+ },
66
+
67
+ ```

3

typo

2019/02/05 07:21

投稿

退会済みユーザー
test CHANGED
File without changes

2

typo

2019/02/05 05:13

投稿

退会済みユーザー
test CHANGED
@@ -34,6 +34,6 @@
34
34
 
35
35
 
36
36
 
37
- 最後にコピーを値するのが手っ取り早いと思います。
37
+ 最後にコピーするのが手っ取り早いと思います。
38
38
 
39
39
  this.list = [...this.this.list]

1

2個質問があったので修正

2019/02/05 05:13

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,7 @@
1
+ ### goShuffleが定義されていないとエラーが出てしまう
2
+
3
+
4
+
1
5
  > goShuffle()
2
6
 
3
7
 
@@ -5,3 +9,31 @@
5
9
  thisが抜けているため、グローバルにgoShuffle関数を探しに行くも見つからずエラーになっています。
6
10
 
7
11
  this.goShuffle()としてください。
12
+
13
+
14
+
15
+ ### 配列をランダムに並び替える
16
+
17
+
18
+
19
+ > [this.list[i], this.list[rand]] = [this.list[rand], this.list[i]]
20
+
21
+
22
+
23
+ 通常これで配列は入れ替わります。
24
+
25
+ しかしながら、Vueは配列の添字による変更を検知できません。
26
+
27
+ そのため、listの状態と描画の状態が一致しない状態になります。
28
+
29
+
30
+
31
+ 詳しくは[配列の変化を検出](https://jp.vuejs.org/v2/guide/list.html#%E9%85%8D%E5%88%97%E3%81%AE%E5%A4%89%E5%8C%96%E3%82%92%E6%A4%9C%E5%87%BA)読んでください。
32
+
33
+
34
+
35
+
36
+
37
+ 最後にコピーを値するのが手っ取り早いと思います。
38
+
39
+ this.list = [...this.this.list]