配列(オブジェクト?)の中にある配列(オブジェクト?)の出力

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>配列(オブジェクト?)の中にある配列(オブジェクト?)の出力</title>
  6. <script type="text/javascript" src="jquery-1.5.1.min.js"></script>
  7. <script type="text/javascript" src="knockout-2.1.0beta.js"></script>
  8. <script type="text/javascript">
  9.   $(document).ready(function () {
  10.     ko.applyBindings(new viewModel());
  11.   });
  12.   function viewModel()
  13.   {
  14.     var self = this;
  15.     
  16.     var KushiAry = [
  17.       {name: "ねぎ間",         price: 168},
  18.       {name: "ハツ",           price: 136},
  19.       {name: "レバー",         price: 136},
  20.       {name: "ぼんちり",       price: 136},
  21.       {name: "はらみ",         price: 136},
  22.       {name: "うずら玉子",     price: 136},
  23.       {name: "なんこつ",       price: 136},
  24.       {name: "手羽先",         price: 168},
  25.       {name: "せせり",         price: 136},
  26.       {name: "白レバー",       price: 168},
  27.       {name: "コニク",         price: 110},
  28.       {name: "丸ごとシマウマ", price: 290}
  29.     ];
  30.     var TasteAry = [
  31.       {name: "ねぎ間", taste: "味噌"}, 
  32.       {name: "ねぎ間", taste: "ポン酢"}, 
  33.       {name: "ねぎ間", taste: "芥子"}, 
  34.       {name: "ハツ", taste: "塩"}, 
  35.       {name: "ハツ", taste: "味噌"}, 
  36.       {name: "レバー", taste: "塩"}, 
  37.       {name: "レバー", taste: "味噌"}, 
  38.       {name: "レバー", taste: "芥子"}, 
  39.       {name: "ぼんちり", taste: "塩"}, 
  40.       {name: "ぼんちり", taste: "味噌"}, 
  41.       {name: "ぼんちり", taste: "ポン酢"}, 
  42.       {name: "ぼんちり", taste: "芥子"}, 
  43.       {name: "はらみ", taste: "塩"}, 
  44.       {name: "はらみ", taste: "たれ"}, 
  45.       {name: "はらみ", taste: "芥子"}, 
  46.       {name: "うずら玉子", taste: "味噌"}, 
  47.       {name: "うずら玉子", taste: "芥子"}, 
  48.       {name: "なんこつ", taste: "塩"}, 
  49.       {name: "なんこつ", taste: "ポン酢"}, 
  50.       {name: "手羽先", taste: "塩"}, 
  51.       {name: "手羽先", taste: "たれ"}, 
  52.       {name: "手羽先", taste: "味噌"}, 
  53.       {name: "手羽先", taste: "ポン酢"}, 
  54.       {name: "手羽先", taste: "芥子"}, 
  55.       {name: "せせり", taste: "塩"}, 
  56.       {name: "せせり", taste: "味噌"}, 
  57.       {name: "せせり", taste: "芥子"}, 
  58.       {name: "白レバー", taste: "味噌"}, 
  59.       {name: "白レバー", taste: "ポン酢"}, 
  60.       {name: "丸ごとシマウマ", taste: "塩"}, 
  61.       {name: "丸ごとシマウマ", taste: "たれ"}, 
  62.       {name: "丸ごとシマウマ", taste: "味噌"}, 
  63.       {name: "丸ごとシマウマ", taste: "ポン酢"},
  64.       {name: "丸ごとシマウマ", taste: "芥子"}
  65.     ];
  66.     
  67.     // KushiAryの中にTasteAryを組み込んでいく
  68.     for (i=0; i<KushiAry.length; i++)
  69.     {
  70.       k = 0;
  71.       // Tasteを作成しておく。
  72.       KushiAry[i]["Taste"] = new Array();
  73.       for (j=0; j<TasteAry.length; j++)
  74.       {
  75.         if (KushiAry[i]["name"] == TasteAry[j]["name"])
  76.         {
  77.           KushiAry[i]["Taste"][k] = TasteAry[j];
  78.           k++;
  79.         }
  80.       }
  81.     }
  82.     
  83.     self.kushiData = ko.observable();
  84.     self.kushiData(KushiAry);
  85.   }
  86. </script>
  87. <style type="text/css">
  88.   table
  89.   {
  90.     border-collapse:collapse;
  91.     margin:0;
  92.   }
  93.   th, td
  94.   {
  95.     text-align:left;
  96.     vertical-align:top;
  97.     padding:3px;
  98.     font-weight:normal;
  99.     border:1px solid #ccc;
  100.   }
  101.   th
  102.   {
  103.     background-color:#ffffdd;
  104.   }
  105. </style>
  106. </head>
  107. <body>
  108. <h1>配列(オブジェクト?)の中にある配列(オブジェクト?)の出力</h1>
  109. <div>
  110. <table>
  111. <thead>
  112. <tr><th>メニュー</th><th>味</th><th>価格</th></tr>
  113. </thead>
  114. <tbody data-bind="visible:kushiData, foreach: kushiData">
  115. <tr>
  116. <td data-bind="text: name"></td>
  117. <td data-bind="visible:Taste, foreach: Taste"><span data-bind="text: taste"></span>、</td>
  118. <td data-bind="text: price"></td>
  119. </tr>
  120. </tbody>
  121. </table>
  122. </div>
  123. <div style="font-size:10pt;text-align:right;margin-top:0.5em;">
  124. <a href="//tips.recatnap.info/" target="_top">PCスキルの小技・忘却防止メモ</a> -
  125. <a href="//tips.recatnap.info/wiki/" target="_top">PCスキルの小技・忘却防止メモのまとめ(wiki)</a>
  126. </div>
  127. <div style="font-size:10pt;text-align:center;margin-top:0.5em;padding:0.5em;border-top:1px solid #ccc;">
  128. Copyright &copy; 2009 by PCスキルの小技・忘却防止メモ. All rights reserved.
  129. </div>
  130. </body>
  131. </html>