質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

90.12%

javascriptで入力された数値によって変わる計算結果をランキング表示するにはどうすれば良いでしょうか。

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 559

TreesShimi

score 14

<script>
function fnckeisan() {
// 入力された数値
var sss = (document.querySelector('#sss').value);
// 選択された1番~5番の計算式
var asall={"a1":1,"a2":2,"a3":3,"a4":4,"a5":5};
var selecas= asall[document.querySelector('#as').value];
// 各種 関数の定義
var x1 = 0;
var x2 = 0;
var x3 = 0;
var x4 = 0;
var x5 = 0;
var word ='数値の小さな順に並べ替え';
var wordx1 ='エックス(1)';
var wordx2 ='エックス(2)';
var wordx3 ='エックス(3)';
var wordx4 ='エックス(4)';
var wordx5 ='エックス(5)';
// 選んだ計算式(1番~5番)によってx1~x5の数値が変わる
switch (selecas)
            {
                case 1:
                    x1 = 10 , x2 = 20 , x3 = 30 , x4 = 40 , x5 = 50;
                    break;
                case 2:
                    x1 = 100 , x2 = 200 , x3 = 300, x4 = 400 , x5 = 500;
                    break;
                case 3:
                    x1 = 150 , x2 = 250 , x3 = 350 , x4 = 450 , x5 = 550;
                    break;
                case 4:
                    x1 = 1 , x2 = 2 , x3 = 3 , x4 = 4 , x5 = 5;
                    break;
                case 5:
                    x1 = 180 , x2 = 280 , x3 = 380 , x4 = 480 , x5 = 580;
                    break;
               }
// 入力されたsssの値によって計算式および結果が変わります
if (sss >= 300){
 ans1 = (sss - 300) * x1;
 ans2 = (sss - x2) ;
 ans3 = (sss - x3) * x3;
 ans4 = (sss - x4) * x4; 
 ans5 = (sss - 300) * x5;
  }else if (sss >= 100){  
 ans1 = (sss - 100) * x5;
 ans2 = (sss - x4) * x4;
 ans3 = (sss - x3) * x3;
 ans4 = (sss - x2) ;
 ans5 = (sss - 100) * x1;
  }else if (sss <= 100){
 ans1 = (sss * 1 ) + x1;
 ans2 = (sss * 2) + x2;
 ans3 = (sss * x3 ) ;
 ans4 = (sss * 4) + x4;
 ans5 = (sss * x5 ) + x5;
  }
// 計算結果を表示します
  document.querySelector('#ansall').textContent = `${word}
${wordx1}${Math.floor(ans1)}
${wordx2}${Math.floor(ans2)}
${wordx3}${Math.floor(ans3)}
${selecas==4?'':wordx4}${selecas==4?'':Math.floor(ans4)}
${wordx5}${Math.floor(ans5)}`;  
}
</script>
<form>
<td>数値を入力してください(1~9999)</td>
<input type="text" id="sss" type="number" min="0" max="9999" value="0">
<td>1番~5番の計算式を選んでください</td>
<select id="as">
<option value="a1">1番</option>
<option value="a2">2番</option>
<option value="a3">3番</option>
<option value="a4">4番</option>
<option value="a5">5番</option>
</select>
 <br>
<input type="button" value="計算" onclick="fnckeisan();">
 <br>
<input type="reset" value="リセット">
<div id="ansall" style="white-space:pre;"></div>
</form>



==============================================================

入力された数値によって変わる計算結果を、結果に応じて並べ替えて表示したい

入力された数値や、1番~5番の中から選んだ計算式によって、出力される数値が異なってくるプログラムですが、入力値に応じて、あるいはどの計算式を選んでも、数値の小さな順に表示されるようにしたいと思っています。

しかしながら、どのようにプログラムを書けばよいか分からないため、追加すべきところなどをご教授いただけると助かります。

なお、4番の計算式を選んだときは、エックス(4)の表示と計算結果については表示されないようにしたいのですが、非表示にすることは出来たものの、歯抜けのようなカタチになるため、そこを改善する方法もご教授いただけると助かります

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2018/09/18 14:12

    少し丸投げが過ぎませんか?「並べ替え」というキーワードで調べはある程度つきそうに思います。

    キャンセル

  • miyabi-sun

    2018/09/18 14:30

    「順番どうり」日本語🤔、「selecas」キラキラネーム?🤔、「sss」なんでそんな独自ルールが?🤔、「var x1」これは行数無駄に多くなりそう🤔

    キャンセル

  • 退会済みユーザー

    2018/09/18 18:48

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 2

+1

1番から5番を計算した答えを小さい数字から並べるようにしたいです

一般的に「昇順ソート」と呼ばれる手法です。

一般的に呼ばれるという所から想像出来るように、
多くの言語では集合を配列に格納し、ソートアルゴリズムを駆使して並べ替えるというテクニックが存在しており、様々な状況で利用されています。

なのでvar x1 = 0;みたいな宣言している箇所を配列にしてください。
そうすればネット上の情報があなたのやりたいことを導いてくれるはずです。

参考サイト:

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

var ans1=5.1;
var ans2=22;
var ans3=10;
var ans4=5;
var ans5=2;
var str=Array(5).fill(1).map(function(x,y){
  return window["ans"+(y+1)];
}).sort(function(x,y){
  return x>y;
}).join("\n");
console.log(str);

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる