回答編集履歴
4
source追加
answer
CHANGED
@@ -17,4 +17,18 @@
|
|
17
17
|
|
18
18
|
|
19
19
|
最後にコピーするのが手っ取り早いと思います。
|
20
|
+
```javascript
|
21
|
+
methods: {
|
22
|
+
goShuffle() {
|
23
|
+
console.log("実行されているかの確認")
|
24
|
+
for (var i = this.list.length - 1; i >= 0; i--) {
|
25
|
+
// 0~iのランダムな数値を取得
|
26
|
+
var rand = Math.floor( Math.random() * ( i + 1 ) );
|
27
|
+
// 配列の数値を入れ替える
|
20
|
-
this.list = [
|
28
|
+
[this.list[i], this.list[rand]] = [this.list[rand], this.list[i]]
|
29
|
+
}
|
30
|
+
|
31
|
+
this.list = [].concat(this.list); // もしくは this.list = [...this.list];
|
32
|
+
}
|
33
|
+
},
|
34
|
+
```
|
3
typo
answer
CHANGED
File without changes
|
2
typo
answer
CHANGED
@@ -16,5 +16,5 @@
|
|
16
16
|
詳しくは[配列の変化を検出](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)読んでください。
|
17
17
|
|
18
18
|
|
19
|
-
最後にコピー
|
19
|
+
最後にコピーするのが手っ取り早いと思います。
|
20
20
|
this.list = [...this.this.list]
|
1
2個質問があったので修正
answer
CHANGED
@@ -1,4 +1,20 @@
|
|
1
|
+
### goShuffleが定義されていないとエラーが出てしまう
|
2
|
+
|
1
3
|
> goShuffle()
|
2
4
|
|
3
5
|
thisが抜けているため、グローバルにgoShuffle関数を探しに行くも見つからずエラーになっています。
|
4
|
-
this.goShuffle()としてください。
|
6
|
+
this.goShuffle()としてください。
|
7
|
+
|
8
|
+
### 配列をランダムに並び替える
|
9
|
+
|
10
|
+
> [this.list[i], this.list[rand]] = [this.list[rand], this.list[i]]
|
11
|
+
|
12
|
+
通常これで配列は入れ替わります。
|
13
|
+
しかしながら、Vueは配列の添字による変更を検知できません。
|
14
|
+
そのため、listの状態と描画の状態が一致しない状態になります。
|
15
|
+
|
16
|
+
詳しくは[配列の変化を検出](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)読んでください。
|
17
|
+
|
18
|
+
|
19
|
+
最後にコピーを値するのが手っ取り早いと思います。
|
20
|
+
this.list = [...this.this.list]
|