相変わらず 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 件のコメント:
コメントを投稿