在 JavaScript 中实现 Luhn 算法

JavaScriptJavaScriptBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将探索如何在JavaScript中实现Luhn算法。Luhn算法通常用于验证识别号码,如信用卡号码、国际移动设备识别码(IMEI)和国家提供者识别码。通过本实验,你将学习如何分割字符串、反转数组、使用map()、reduce()和shift()方法来实现Luhn算法,并最终确定给定的识别号码是否有效。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/str_manip("String Manipulation") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") subgraph Lab Skills javascript/variables -.-> lab-28477{{"在 JavaScript 中实现 Luhn 算法"}} javascript/data_types -.-> lab-28477{{"在 JavaScript 中实现 Luhn 算法"}} javascript/arith_ops -.-> lab-28477{{"在 JavaScript 中实现 Luhn 算法"}} javascript/comp_ops -.-> lab-28477{{"在 JavaScript 中实现 Luhn 算法"}} javascript/str_manip -.-> lab-28477{{"在 JavaScript 中实现 Luhn 算法"}} javascript/higher_funcs -.-> lab-28477{{"在 JavaScript 中实现 Luhn 算法"}} end

Luhn 校验

要使用Luhn算法来验证识别号码,如信用卡号码、国际移动设备识别码(IMEI)、国家提供者识别码,请遵循以下步骤:

  1. 打开终端/SSH并输入node以开始练习编码。
  2. 结合使用以下方法:String.prototype.split()Array.prototype.reverse()Array.prototype.map()parseInt()来获取一个数字数组。
  3. 使用Array.prototype.shift()获取最后一位数字。
  4. 使用Array.prototype.reduce()来实现Luhn算法。
  5. 如果sum能被10整除,则返回true,否则返回false

以下是代码:

const luhnCheck = (num) => {
  const arr = (num + "")
    .split("")
    .reverse()
    .map((x) => parseInt(x));
  const lastDigit = arr.shift();
  let sum = arr.reduce(
    (acc, val, i) =>
      i % 2 !== 0 ? acc + val : acc + ((val *= 2) > 9 ? val - 9 : val),
    0
  );
  sum += lastDigit;
  return sum % 10 === 0;
};

你可以使用以下示例测试Luhn校验函数:

luhnCheck("4485275742308327"); // true
luhnCheck(6011329933655299); //  true
luhnCheck(123456789); // false

总结

恭喜你!你已经完成了Luhn校验实验。你可以在LabEx中练习更多实验来提升你的技能。