2012年11月11日

CodeStudy 20-10 連想配列のこと


相変わらず CodeStudy で Javascript の練習をしています。
section20-10まで来ました。
今回は初めて2次元配列が出てきて、とても難しかったです。

問題
cart(購入した品物)に配列が定義されています。
それぞれ、itemsに品物の名前、totalPriceに品物の合計金額、
totalQuantityに品物の全個数を代入し、出力してみましょう。
なお、itemsは配列として出力してください。

こんな風に書いたら 正解できました。


var cart = [
  { name:"タマネギ", price:80, quantity:3 },
  { name:"じゃがいも", price:60, quantity:5 },
  { name:"ニンジン", price:40, quantity:4 }
];

var items = [];
var totalPrice = 0;
var totalQuantity = 0;

for(var i = 0; i < cart.length; i++){
  items[i] = cart[i]['name'];
  totalPrice += cart[i]['price'] * cart[i]['quantity'];
  totalQuantity += cart[i]['quantity'];
}

output(items);
output(totalPrice);
output(totalQuantity);


自分で書かなくてはいけないのは、真ん中あたりの for文の所です。
 配列 cart は 0番から始まるので、カウンタ変数 i は 0から。
 普通の配列の中に 連想配列が納められているので、
 for in ではなく for で .length プロパティを使って繰り返し回数を指定。

for 以下の1行目で配列 items に配列 cart の name に
納められた値 3つを代入しています。

2行目で最初エラーが出てしまって行き詰まったのですが、
80(円?)が 3個 + 60 が 5個 + 40 が 4個 の合計を出せば良ので、
for文を使って、配列 i番目 の price * quantity を cart.length の数だけ繰り返して
変数 totalPrice に順に足しながら代入しています。

3行目は、1行目とやっていることは同じですが、代入するのが
配列ではなくて 普通の変数 という所だけ変える必要があります。

このブログの最初の方に 書いたように、ショッピングサイトを作るのが
目標ですので、とても楽しんで取り組めました。

0 件のコメント:

コメントを投稿