\r\n\r\n\r\n```\r\n\r\n### 解決したいこと\r\n\r\nrand1,rand2,rand3が同じ値になったとき「3つは同じ値です」と表示するのですが、「一番値が大きいのはrand3です」とも表示してしまします。\r\n3つが同じ値のときは「3つは同じ値です」とだけ表示したいです、よろしくお願いいたします。","answerCount":2,"upvoteCount":0,"datePublished":"2019-05-17T01:37:34.448Z","dateModified":"2019-05-17T01:37:34.448Z","acceptedAnswer":{"@type":"Answer","text":"「// rand1とrand2が同じ値の場合」の次の行が`if`で始まっていますが、そこを`else if`にすればよいのでは。","dateModified":"2019-05-17T01:40:08.990Z","datePublished":"2019-05-17T01:40:08.990Z","upvoteCount":6,"url":"https://teratail.com/questions/189850#reply-281812"},"suggestedAnswer":[{"@type":"Answer","text":"```javascript\r\nconst check=a=>{\r\n const b=a.map((x,y,z)=>x==Math.max(...z)?\"rand\"+(y+1):null).filter(x=>x!==null);\r\n return (a.length==b.length)?(a.length+\"個のデータは同じ値です\"):(\"一番値が大きいのは\"+b.join(\"と\")+\"です\");\r\n}\r\nconsole.log(check([1,1,1]));\r\nconsole.log(check([1,2,1]));\r\nconsole.log(check([0,2,2]));\r\nconsole.log(check([1,1,0,1,1]));\r\nconsole.log(check([1,1,1,1,1]));\r\n\r\n```","dateModified":"2019-05-17T02:03:41.553Z","datePublished":"2019-05-17T01:57:15.298Z","upvoteCount":2,"url":"https://teratail.com/questions/189850#reply-281823","comment":[]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/JavaScript","name":"JavaScriptに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/189850","name":"JavaScript if文の問題"}}]}}}
質問するログイン新規登録

Q&A

解決済

2回答

1021閲覧

JavaScript if文の問題

okushin

総合スコア13

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/05/17 01:37

0

1

前提・実現したいこと

で0~2のランダムな数値を3つ取得し、「それぞれの数値」と「最も数値が大きい変数」の情報を表示したいです。
また「最も数値が大きい変数」が複数ある場合は複数表示したいです。
イメージ説明

###ソースコード

JavaScript

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="UTF-8"> 5 <title>if</title> 6</head> 7<body> 8 <script type="text/javascript"> 9 // 0~2のランダムの数字の取得 10 var rand1 = Math.floor(Math.random() * 3); 11 var rand2 = Math.floor(Math.random() * 3); 12 var rand3 = Math.floor(Math.random() * 3); 13 14 // 数値を出力 15 document.write('<p>rand1:' + rand1 + '</p>'); 16 document.write('<p>rand2:' + rand2 + '</p>'); 17 document.write('<p>rand3:' + rand3 + '</p>'); 18 19 20 //3つがすべて同じ値の場合 21 if (rand1 === rand2 && rand2 === rand3) { 22 document.write('<p>3つは同じ値です</p>'); 23 } 24 25 //rand1とrand2が同じ値の場合 26 if (rand1 === rand2) { 27 if (rand1 > rand3) { 28 document.write('<p>一番数値が大きいのはrand1とrand2です</p>'); 29 } else { 30 document.write('<p>一番値が大きいのはrand3です</p>'); 31 } 32 //rand1とrand3が同じ値の場合 33 } else if (rand1 === rand3) { 34 if (rand1 > rand2) { 35 document.write('<p>一番数値が大きいのはrand1とrand3です</p>'); 36 } else { 37 document.write('<p>一番数値が大きいのはrand2です</p>'); 38 } 39 //rand2とrand3が同じ値の場合 40 } else if (rand2 === rand3) { 41 if (rand2 > rand1) { 42 document.write('<p>一番数値が大きいのはrand2とrand3です</p>'); 43 } else { 44 document.write('<p>一番数値が大きいのはrand1です</p>'); 45 } 46 //rand1が一番値が大きい場合 47 } else if (rand1 > rand2 && rand1 > rand3) { 48 document.write('<p>一番数値が大きいのはrand1です</p>'); 49 //rand2が一番値が大きい場合 50 } else if (rand2 > rand1 && rand2 > rand3) { 51 document.write('<p>一番数値が大きいのはrand2です</p>'); 52 //rand3が一番値が大きい場合 53 } else if (rand3 > rand1 && rand3 > rand2) { 54 document.write('<p>一番値が大きいのはrand3です</p>'); 55 } 56 </script> 57</body> 58</html>

解決したいこと

rand1,rand2,rand3が同じ値になったとき「3つは同じ値です」と表示するのですが、「一番値が大きいのはrand3です」とも表示してしまします。
3つが同じ値のときは「3つは同じ値です」とだけ表示したいです、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

「// rand1とrand2が同じ値の場合」の次の行がifで始まっていますが、そこをelse ifにすればよいのでは。

投稿2019/05/17 01:40

kei344

総合スコア69643

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

okushin

2019/05/17 01:42

解決出来ました、回答ありがとうございます。
guest

0

javascript

1const check=a=>{ 2 const b=a.map((x,y,z)=>x==Math.max(...z)?"rand"+(y+1):null).filter(x=>x!==null); 3 return (a.length==b.length)?(a.length+"個のデータは同じ値です"):("一番値が大きいのは"+b.join("と")+"です"); 4} 5console.log(check([1,1,1])); 6console.log(check([1,2,1])); 7console.log(check([0,2,2])); 8console.log(check([1,1,0,1,1])); 9console.log(check([1,1,1,1,1])); 10

投稿2019/05/17 01:57

編集2019/05/17 02:03
yambejp

総合スコア118164

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問