Hari / Hari Kod: Cabaran Pengesah Kad Kredit

DDD
Lepaskan: 2024-09-18 15:08:36
asal
749 orang telah melayarinya

Day /  Days of Code: Credit Card Validator Challenge

Ahad, 15 September 2024

Minggu ini adalah mengenai cabaran kod, yang sangat mengagumkan! Satu cabaran yang menarik ialah melaksanakan pengesah kad kredit menggunakan algoritma Luhn, yang menghalang ralat kad kredit satu digit dan transposisi bersebelahan seperti 90 > 09. Pengekodan algoritma Luhn agak boleh dicapai; mari jalani pelaksanaan saya.

Pertama, mari kita luangkan sedikit masa untuk memahami maksud Pengaturcaraan Fungsian (FP). Daripada mempunyai fungsi penting di mana anda beratur nombor kad kredit untuk diuji, pengesahan nombor kad kredit boleh menjadi kaedah yang anda gunakan terus pada pembolehubah nombor kad kredit. Pendekatan modular ini meningkatkan nilai kod anda kerana ia boleh digunakan dengan lebih banyak cara tanpa menulis semula. Satu kesan sampingan dalam FP ialah data menjadi bintang--bukan fungsi, yang kelihatan sangat diperkemas.

Untuk bermula, kami akan menggunakan fungsi anak panah selaras dengan paradigma FP. Ini lebih penting dalam fungsi satu baris, tetapi ia masih praktikal.

  • Ketepikan Digit Terakhir: Langkah pertama dalam algoritma Luhn ialah mengetepikan digit terakhir menjadi pembolehubah yang akan kami namakan lastDigit. Ini mengikut kaedah standard untuk mengakses elemen tatasusunan menggunakan panjang tatasusunan - 1 kerana tatasusunan memulakan penomboran elemen pada 0. JavaScript dengan baik menyediakan ciri ini secara asli untuk tatasusunan.

  • Terbalikkan Tatasusunan: Algoritma Luhn berfungsi pada digit kad kredit dari kanan ke kiri. Untuk memastikan perkara mudah, kami akan membalikkan tatasusunan. JavaScript menyediakan dua kaedah untuk memudahkan operasi ini: potong untuk memilih elemen pertama hingga kedua hingga terakhir dan terbalik untuk membalikkan susunan elemen dalam tatasusunan. Kami akan menetapkan ini kepada tatasusunan baharu bernama allExceptLastReversed.

  • Ganda Setiap Elemen Lain: Langkah seterusnya memerlukan kawalan yang lebih baik ke atas lelaran elemen tatasusunan daripada kaedah lelaran JavaScript yang disediakan, jadi kami akan menggunakan gelung tradisional. Langkah ini melibatkan menggandakan setiap elemen tatasusunan lain dan jika nilainya lebih tinggi daripada 9, tolak 9.

  • Jumlah Elemen dan Sahkan: Sekarang kita hampir selesai. Kami ingin menjumlahkan semua elemen tatasusunan dan mengesahkan bahawa ia boleh dibahagikan dengan 10. JavaScript mempunyai kaedah berulang bernama pengurangan yang menggunakan fungsi, biasanya jumlah atau produk, kepada setiap elemen dalam tatasusunan dan mengumpulkan hasilnya. Di sini kita akan menjumlahkan elemen tatasusunan terbalik dan dihiris, menambah lastDigit dan menyemak sama ada jumlah modulo 10 ialah 0.

JavaScript juga menyediakan perbandingan logik, untuk menilai sebagai benar atau salah, dipanggil nilai Boolean, yang merupakan nilai pulangan fungsi. JavaScript menjadikan pengaturcaraan hampir berseni.

Cabaran ini merupakan cara yang hebat untuk menyelami lebih mendalam kedua-dua paradigma pengaturcaraan berfungsi dan penting. Ia menekankan kepentingan menulis kod modular yang boleh digunakan semula. Semasa saya meneruskan perjalanan 100 Hari Kod saya, saya teruja untuk menangani lebih banyak cabaran dan mengembangkan pemahaman saya tentang konsep pengaturcaraan yang berbeza. Setiap hari membawa peluang baharu untuk belajar dan berkembang, dan saya tidak sabar untuk melihat ke mana perjalanan ini membawa saya seterusnya.

Nantikan lebih banyak kemas kini dan selamat mengekod! ?

Ini kod lengkapnya:

const validateCred = (cardNumber) => {
  const lastDigit = cardNumber[cardNumber.length - 1];
  let allExceptLastReversed = cardNumber.slice(0, -1).reverse();
  for (let i = 0; i < allExceptLastReversed.length; i += 2) { 
    allExceptLastReversed[i] *= 2; 
    if (allExceptLastReversed[i] > 9) {
      allExceptLastReversed[i] -= 9; 
    }
  }
  const sum = allExceptLastReversed.reduce((acc, curr) => acc + curr, 0) + lastDigit; 
  // sum all digits
  return (sum % 10 === 0);
};
Salin selepas log masuk

Cross disiarkan: Dev https://dev.to/jacobsternx dan LinkedIn https://www.linkedin.com/in/jacobsternx

Atas ialah kandungan terperinci Hari / Hari Kod: Cabaran Pengesah Kad Kredit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan