01 / 06
くり返しとデータの持ち方
INPUT · スライド
入れ子を繰り返しで処理する
02 / 06
i を番号に使う
for の i を配列の番号に使い、そのあとに .名前 をつなげるだけ。
list[i].name は「i 件目のオブジェクトの name」と読めばいいよ。
const pets = [ { name: "もふ", age: 3 }, { name: "ぽち", age: 5 }, { name: "たま", age: 1 },];for (let i = 0; i < pets.length; i++) { console.log(pets[i].name);}実行結果
もふ ぽち たま
03 / 06
1件ずつ受け取ると読みやすい
pets[i].name が何度も出てくると読みにくい。{ } の中でいったん受け取ると、ぐっと読みやすくなるよ。
どちらの書き方でも動きは同じ。読みやすいほうを選ぼう。
const pets = [ { name: "もふ", age: 3 }, { name: "ぽち", age: 5 },];for (let i = 0; i < pets.length; i++) { const pet = pets[i]; console.log(`${pet.name}は${pet.age}さい`);}実行結果
もふは3さい ぽちは5さい
04 / 06
集計する
ためる変数を外に置けば、全件の合計が出せる。データが何件あってもコードは同じだよ。
if を混ぜれば「条件に合うものだけ数える」こともできる。ここまで学んだ道具が全部つながるところだよ。
const cart = [ { name: "パン", price: 160, count: 2 }, { name: "のり", price: 220, count: 3 },];let total = 0;for (let i = 0; i < cart.length; i++) { total += cart[i].price * cart[i].count;}console.log(total);実行結果
980
05 / 06
条件に合うものだけ数える
ループの中に if を入れれば、条件に合う件だけを数えたりためたりできる。「在庫が0のものだけ数えたい」というような場面だよ。
const items = [ { name: "パン", stock: 0 }, { name: "のり", stock: 5 }, { name: "みず", stock: 0 },];let outOfStock = 0;for (let i = 0; i < items.length; i++) { if (items[i].stock === 0) { outOfStock++; }}console.log(`${outOfStock}件が在庫切れ`);実行結果
2件が在庫切れ
06 / 06
最大値を探す
「いちばん高いものはどれ?」も、同じ形で書ける。基準になる変数を用意して、より大きいものが出るたびに入れ替えるよ。
最初の1件を基準にしておくのがコツ。0 から始めると、全員がマイナスの値だったときに正しく比べられなくなる。
const prices = [ { name: "パン", price: 160 }, { name: "のり", price: 220 }, { name: "みず", price: 90 } ];let highest = prices[0];for (let i = 1; i < prices.length; i++) { if (prices[i].price > highest.price) { highest = prices[i]; }}console.log(highest.name);実行結果
のり