Rumah  >  Soal Jawab  >  teks badan

Soalan pemula: Mengapa ini untuk gelung mengembalikan palsu?

Saya sedang membuat beberapa kerja rumah dalam JS, dan saya menulis fungsi yang membandingkan penghujung rentetan (str) dan mengembalikan benar atau salah jika ia sepadan dengan rentetan "sasaran" (ini boleh dilakukan dengan lebih mudah, tetapi yang ini Saya Pilih macam huru hara):

function confirmEnding(str, target) {
  let valid = true;
  
console.log(str.length);
  console.log(target.length);

  for(let i = 0; i < target.length; i++){
    if (str.substring(str.length - (i+1)) == target.substring(target.length - (i+1))){
      valid = true;
    }
    else{
      valid = false;
    }
  }
  
  console.log(valid);
  return valid;

}

Jadi, fungsi ini memang berfungsi, tetapi melihatnya, saya tidak faham mengapa...

Jika saya berlari

confirmEnding("Testing123", "tin5123");

Nampaknya pada saya ia sepatutnya kembali benar, tetapi gelung for tidak mengubah nilai pembolehubah "sah" kembali kepada benar selepas lelaran keempat gelung for? (Bukankah gelung for juga harus berulang ke atas 5, 6 dan 7 dan mengembalikan "benar" untuk menjadi "sah"?)

Jawapan yang saya dapat daripada OpenAI ialah fungsi itu menyemak sama ada "sasaran" sepadan dengan penghujung "str". bagaimana? Saya tidak dapat melihat di mana-mana yang saya telah memberikan arahan khusus untuk melakukan ini...

Bagaimanakah fungsi menentukan nilai pembolehubah pulangan yang "sah"? Adakah ia berulang melalui segala-galanya dan hanya mengembalikan "jika: sah = benar" jika SEMUA i adalah benar? kenapa?

Terima kasih

P粉022723606P粉022723606407 hari yang lalu419

membalas semua(1)saya akan balas

  • P粉575055974

    P粉5750559742023-09-09 10:28:32

    Ia berkesan kerana ia bermula pada penghujung

    function confirmEnding(str, target) {
      let valid = true;
    
      for(let i = 0; i < target.length; i++){
        console.log(str.substring(str.length - (i+1)), target.substring(target.length - (i+1)))
        if (str.substring(str.length - (i+1)) == target.substring(target.length - (i+1))){
          valid = true;
        }
        else{
          valid = false;
        }
      }
      
      return valid;
    
    } 
    
    console.log(confirmEnding("Testing123", "tin5123"));

    Kenapa perlu bersusah payah dengan gelung?

    function confirmEnding(str, target) {
      return str.endsWith(target)
    } 
    
    console.log(confirmEnding("Testing123", "tin5123"));

    balas
    0
  • Batalbalas