gpt4 book ai didi

javascript - 检查公民号码的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:52:33 24 4
gpt4 key购买 nike

谁能帮我写一个 Javascript/算法函数来检查唯一公民身份号码是否正确?

我想要一个基于这个逻辑的 Javascript 函数

https://en.wikipedia.org/wiki/Unique_citizenship_number

想写一个检查并给出跟随值的函数

例子

7523169263 — 男性,生于 1875 年 3 月 16 日8032056031 — 女,1880 年 12 月 5 日出生8001010008——男,1980年1月1日出生7501020018——女,1975年1月2日出生7552010005 — 男性,2075 年 12 月 1 日出生7542011030 — 女,2075 年 2 月 1 日出生

谢谢

我就是这么做的

var checkCivilNumber = function(number) {
var coef = [2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],
sum = 0;
for (var i = 0; i < number.length - 1; i++) {
sum += parseInt(number[i]) * coef[i];
}
return (11 - (sum % 11) == number[number.length-1]);
}

最佳答案

var checkCivilNumber = function(number) {
var coef = [2, 4, 8, 5, 10, 9, 7, 3, 6],
sum = 0;
for (var i = 0; i < number.length - 1; i++) {
sum += parseInt(number[i]) * coef[i];
}
return (((sum % 11) % 10) == number[number.length-1]);
}
  • 系数倒序
  • 求和后对11取模,对结果取模10,按照算法10变为0

测试:

console.log(checkCivilNumber("7523169263"));
console.log(checkCivilNumber("8032056031"));
console.log(checkCivilNumber("8001010008"));
console.log(checkCivilNumber("7501020018"));
console.log(checkCivilNumber("7552010005"));
console.log(checkCivilNumber("7542011030"));

这是获取详细信息的函数。可以使用子字符串提取字段,然后根据规则进行调整。我将留给您正确格式化输出:

var civilNumberDetails = function(number) {
var year = parseInt(number.substring(0,2)) + 1900;
var month = parseInt(number.substring(2,4));
var day = parseInt(number.substring(4,6));
if(month > 40) // years from 2000-2099 have 40 added to the month
{
month -= 40;
year += 100;
}
if(month > 20) // years from 1800-1899 have 20 added to the month
{
month -= 20;
year -= 100;
}
// check odd/even of 9th digit using bitwise operator:
var gender = (parseInt(number[8]) & 1) ? "F" : "M";
console.log(year + "-" + month + "-" + day + " " + gender);
}

关于javascript - 检查公民号码的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55149624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com