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

回答編集履歴

1

並び順を気にしない判定処理に変更

2018/09/29 02:06

投稿

takey
takey

スコア312

answer CHANGED
@@ -70,4 +70,45 @@
70
70
 
71
71
  }
72
72
 
73
+ ```
74
+
75
+ 【追記】
76
+ 並び順を気にしない場合、cpuの各要素と、usersの各要素をそれぞれ単純に比較すれば良いと思います。
77
+ おそらくユーザー入力で同じ数字を複数入力されていると期待する結果が得られないので、そこは工夫をする必要があると思います。例えば、「ユーザー入力の重複する数字を事前に削除しておく」などです。
78
+
79
+ 必要な修正箇所だけ以下に抜粋します。
80
+
81
+ ユーザー入力の重複する数字を事前に削除する処理
82
+ ```JavaScript
83
+ // ユーザ入力を受け取るusers配列を作成
84
+ for (var i = 0; i < 6; i++){
85
+ users[i] = Number(document.getElementById('user'+(i+1)).value);
86
+ }
87
+ // ユーザー入力の重複した数字を削除しておく
88
+ // users = [1,1,1,1,1,1]のとき、cpuの中に1が一つでもあれば一等賞になってしまうのを防ぐ
89
+ // users = [1,1,1,1,1,1] --> [1]
90
+ users = users.filter(function(x, i, self){
91
+ return self.indexOf(x) === i;
92
+ });
93
+ ```
94
+
95
+ 当選結果を判定する箇所
96
+ ```JavaScript
97
+ // 当選結果を判定する
98
+ var matched = 0; // 一致した数
99
+ var is_lucky = false; // ラッキーナンバーが一致したかどうか
100
+ for(var i = 0; i < 6; i++){
101
+ if(users[i] === cpu[6]){
102
+ is_lucky = true;
103
+ }
104
+ }
105
+
106
+ for(var i = 0; i < 6; i++){
107
+ for(var j = 0; j < users.length; j++){
108
+ if(cpu[i] === users[j]){
109
+ matched ++;
110
+ break;
111
+ }
112
+ }
113
+ }
73
114
  ```