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

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

ただいまの
回答率

91.37%

  • JavaScript

    11195questions

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

異なるセレクト部分から同じ選択肢が選ばれた場合に、同じ個所から数値を取り出す方法について

解決済

回答 1

投稿 2017/11/21 22:30

  • 評価
  • クリップ 0
  • VIEW 39

evine

score 2

先ほど https://teratail.com/questions/101410 で質問させていただきました
教えていただいたjavasprictでの記述を使わせていただいてたのですが、編集していて気になる点があったため質問させていただきます

'use strict'
var kcal = {};
kcal["ve1"] = {};
kcal["ve2"] = {};
kcal["ve3"] = {};
kcal["ve1"]["a"] = {"kcal":100,"na":10,"mg":20};
kcal["ve1"]["b"] = {"kcal":20,"na":20,"mg":10};
kcal["ve1"]["c"] = {"kcal":30,"na":15,"mg":40};
kcal["ve2"]["a"] = {"kcal":100,"na":10,"mg":20};
kcal["ve2"]["b"] = {"kcal":20,"na":20,"mg":10};
kcal["ve2"]["c"] = {"kcal":30,"na":15,"mg":40};
kcal["ve3"]["a"] = {"kcal":100,"na":10,"mg":20};
kcal["ve3"]["b"] = {"kcal":20,"na":20,"mg":10};
kcal["ve3"]["c"] = {"kcal":30,"na":15,"mg":40};

のように同じ組み合わせの数値を繰り返し使用する場合、多少長くなっておよいのでそれらをまとめて表記する方法はないのでしょうか?もしあれば教えていただきたいです

また編集中の全文です

人数: <input type="text" value="1" id="a1" class="example"><br /><br />
日数: <input type="text" value="1" id="b1" class="example"><br /><br />

<select  style="width: 222.297px;"  id="ve1"> 
<option  value="a">野菜1</option>
<option  value="b">野菜2</option>
<option  value="c">野菜3</option>  
</select>
<select  id="abs1">  
<option  value="x">吸収力弱</option> 
<option  value="y">吸収力中</option> 
<option  value="z">吸収力強</option>   
</select><br /><br />

<select  style="width: 222.297px;" id="ve2" > 
<option  value="a">野菜1</option> 
<option  value="b">野菜2</option>
<option  value="c">野菜3</option>
</select>
<select  id="abs2">  
<option  value="x">吸収力弱</option> 
<option  value="y">吸収力中</option> 
<option  value="z">吸収力強</option>   
</select><br /><br />

<select  id="ve3" style="width: 222.297px;">  
<option  value="a">野菜1</option>  
<option  value="b">野菜2</option>  
<option  value="c">野菜3</option>    
</select>
<select  id="abs3">  
<option  value="x">吸収力弱</option> 
<option  value="y">吸収力中</option> 
<option  value="z">吸収力強</option>   
</select><br /><br />

<input  onclick="practice_sum()" id="sum" value="計算!" type="button">
<br />
計算結果(一人当たり)<br />
 <label>カロリー<output  id="aresulta">未入力計算</output></label><br />
 <label>ナトリウム<output  id="aresultb">未入力計算</output></label><br />
 <label>マグネシウム<output  id="aresultc">未入力計算</output></label><br />
計算結果(全員)<br />
 <label>カロリー<output  id="resulta">未入力計算</output></label><br />
 <label>ナトリウム<output  id="resultb">未入力計算</output></label><br />
 <label>マグネシウム<output  id="resultc">未入力計算</output></label><br />
計算結果(日数分)<br />
 <label>カロリー<output  id="sresulta">未入力計算</output></label><br />
 <label>ナトリウム<output  id="sresultb">未入力計算</output></label><br />
 <label>マグネシウム<output  id="sresultc">未入力計算</output></label>


<script>

'use strict'
var kcal = {};
kcal["ve1"] = {};
kcal["ve2"] = {};
kcal["ve3"] = {};
kcal["ve1"]["a"] = {"kcal":100,"na":10,"mg":20};
kcal["ve1"]["b"] = {"kcal":20,"na":20,"mg":10};
kcal["ve1"]["c"] = {"kcal":30,"na":15,"mg":40};
kcal["ve2"]["a"] = {"kcal":100,"na":10,"mg":20};
kcal["ve2"]["b"] = {"kcal":20,"na":20,"mg":10};
kcal["ve2"]["c"] = {"kcal":30,"na":15,"mg":40};
kcal["ve3"]["a"] = {"kcal":100,"na":10,"mg":20};
kcal["ve3"]["b"] = {"kcal":20,"na":20,"mg":10};
kcal["ve3"]["c"] = {"kcal":30,"na":15,"mg":40};
var abs = {};
abs["abs1"] = {};
abs["abs2"] = {};
abs["abs3"] = {};
abs["abs1"]["x"] = {"kcal":1,"na":1,"mg":0.8};
abs["abs1"]["y"] = {"kcal":1.2,"na":1.1,"mg":1.1};
abs["abs1"]["z"] = {"kcal":1.3,"na":1.1,"mg":1.7};
abs["abs2"]["x"] = {"kcal":1,"na":1,"mg":0.8};
abs["abs2"]["y"] = {"kcal":1.2,"na":1.1,"mg":1.1};
abs["abs2"]["z"] = {"kcal":1.3,"na":1.1,"mg":1.7};
abs["abs3"]["x"] = {"kcal":1,"na":1,"mg":0.8};
abs["abs3"]["y"] = {"kcal":1.2,"na":1.1,"mg":1.1};
abs["abs3"]["z"] = {"kcal":1.3,"na":1.1,"mg":1.7};


function setVal(sel,val) {
  if(val > 99999999) {
    document.getElementById(sel).value = 99999999;
  }else if (val < 0) {
    document.getElementById(sel).value = 0;
  } else {
    document.getElementById(sel).value = Math.floor(val);
  }
}


function practice_sum() {
  var ve1  = document.getElementById("ve1");
  var ve2  = document.getElementById("ve2");
  var ve3  = document.getElementById("ve3");
  var abs1 = document.getElementById("abs1");
  var abs2 = document.getElementById("abs2");
  var abs3 = document.getElementById("abs3");
  var a1 = parseFloat(document.getElementById("a1").value);
  var b1 = parseFloat(document.getElementById("b1").value);
  var aresulta = ( parseFloat(kcal[ve1.id][ve1.value].kcal) * parseFloat(abs[abs1.id][abs1.value].kcal) ) +
                 ( parseFloat(kcal[ve2.id][ve2.value].kcal) * parseFloat(abs[abs2.id][abs2.value].kcal) ) +
                 ( parseFloat(kcal[ve3.id][ve3.value].kcal) * parseFloat(abs[abs3.id][abs3.value].kcal) );
  setVal("aresulta",aresulta);
  var aresultb = ( parseFloat(kcal[ve1.id][ve1.value].na) * parseFloat(abs[abs1.id][abs1.value].na) ) +
                 ( parseFloat(kcal[ve2.id][ve2.value].na) * parseFloat(abs[abs2.id][abs2.value].na) ) +
                 ( parseFloat(kcal[ve3.id][ve3.value].na) * parseFloat(abs[abs3.id][abs3.value].na) );
  setVal("aresultb",aresultb);
  var aresultc = ( parseFloat(kcal[ve1.id][ve1.value].mg) * parseFloat(abs[abs1.id][abs1.value].mg) ) +
                 ( parseFloat(kcal[ve2.id][ve2.value].mg) * parseFloat(abs[abs2.id][abs2.value].mg) ) +
                 ( parseFloat(kcal[ve3.id][ve3.value].mg) * parseFloat(abs[abs3.id][abs3.value].mg) );
  setVal("aresultc",aresultc);

  var resulta = aresulta*a1;
  setVal("resulta",resulta);

  var resultb = aresultb*a1;
  setVal("resultb",resultb);

  var resultc = aresultc*a1;
  setVal("resultc",resultc);

  var sresulta = resulta*b1 ;
  setVal("sresulta",sresulta);

  var sresultb = resultb*b1 ;
  setVal("sresultb",sresultb);

  var sresultc = resultc*b1 ;
  setVal("sresultc",sresultc);
}
 </script></div></div></span>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+3

var kcal = {};
["ve1","ve2","ve3"].map(function(i){
  kcal[i]={
    "a":{"kcal":100,"na":10,"mg":20},
    "b":{"kcal":20 ,"na":20,"mg":10},
    "c":{"kcal":30 ,"na":15,"mg":40},
  }
});

投稿 2017/11/21 22:51

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/11/21 23:07

    助かりました!ありがとうございます!

    キャンセル

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

ただいまの回答率

91.37%

関連した質問

同じタグがついた質問を見る

  • JavaScript

    11195questions

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