Langsung ke konten
Menelusuri kode

Pelajaran 2.2

Batas loop

6 menit · 7 langkah

  1. Langkah 1 dari 7 · Penjelasan

    Array dengan panjang n punya index 0 sampai n - 1. Jadi loop standarnya i < nums.length, bukan i <= nums.length.

    Kebanyakan bug batas loop datang dari tiga tempat: < lawan <=, membaca nums[i + 1] di item terakhir, dan loop mundur yang berhenti terlalu cepat.

  2. Langkah 2 dari 7 · Tebak hasilnya

    Perhatikan <=. Apa yang di-return untuk "abc"?

    function solution(s) {  let out = ""  for (let i = 0; i <= s.length; i++) {    out += s[i]  }  return out}
    1. "abcundefined"
    2. "abc"
    3. "ab"
  3. Langkah 3 dari 7 · Tebak hasilnya

    Loop mundur. Apa yang di-return untuk [1, 2, 3]?

    function solution(nums) {  const out = []  for (let i = nums.length - 1; i > 0; i--) {    out.push(nums[i])  }  return out}
    1. [3, 2]
    2. [3, 2, 1]
    3. [2, 1]
  4. Langkah 4 dari 7 · Cari bug-nya

    Soal "Return hasil kali terbesar dari dua tetangga." Untuk [3, 6, -2] kode ini me-return NaN. Ketuk baris yang salah.

    function solution(nums) {  let best = -Infinity  for (let i = 0; i < nums.length; i++) {    best = Math.max(best, nums[i] * nums[i + 1])  }  return best}
  5. Langkah 5 dari 7 · Tebak hasilnya

    Apa yang di-return untuk n = 5?

    function solution(n) {  let count = 0  for (let i = n; i < 3; i++) {    count++  }  return count}
    1. 0
    2. 1
    3. 2
  6. Langkah 6 dari 7 · Susun kodenya

    Susun function yang me-return jumlah setiap pasangan tetangga. [1, 2, 3] jadi [3, 5]. Dua baris tidak termasuk.

    for (let i = 0; i < nums.length; i++) {const out = []for (let i = 1; i < nums.length - 1; i++) {}return outout.push(nums[i] + nums[i + 1])for (let i = 0; i < nums.length - 1; i++) {}function solution(nums) {
  7. Langkah 7 dari 7 · Ringkasan

    • Index array dari 0 sampai length - 1. Loop standarnya i < length.
    • Kalau membaca nums[i + 1], berhenti di i < length - 1.
    • Loop mundur butuh i >= 0. Loop yang kondisinya salah dari awal tidak jalan sama sekali.

    Kartu pola

    Cek batas loop
    Kapan dipakai: Setiap kali menulis loop. Telusuri putaran pertama dan putaran terakhir saja, karena bug batas selalu ada di sana.
    for (let i = 0; i < n; i++)          // 0 .. n-1for (let i = 0; i < n - 1; i++)      // pakai / uses nums[i + 1]for (let i = n - 1; i >= 0; i--)     // mundur / backward