在 JavaScript 中实现 Luhn 算法

Beginner

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

简介

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

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 中练习更多实验来提升你的技能。