Soalan pemula: Mengapa ini untuk gelung mengembalikan palsu?
P粉022723606
P粉022723606 2023-09-08 17:31:55
0
1
456

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粉022723606
P粉022723606

membalas semua(1)
P粉575055974

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"));
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan