Javascript 一种民用数字校验算法

Javascript 一种民用数字校验算法,javascript,algorithm,Javascript,Algorithm,有人能帮我写一个Javascript/算法函数来检查唯一的公民号是否正确吗 我想要一个基于此逻辑的Javascript函数 想写一个检查并给出以下值的函数吗 范例 7523169263-男性,1875年3月16日出生 8032056031-女性,1880年12月5日出生 8001010008-男性,1980年1月1日出生 7501020018-女性,1975年1月2日出生 7552010005-男性,出生于2075年12月1日 7542011030-一名女性,出生于2075年2月1日 谢谢 我

有人能帮我写一个Javascript/算法函数来检查唯一的公民号是否正确吗

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

想写一个检查并给出以下值的函数吗

范例

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=函数(编号){
var coef=[2,1,6,3,7,9,10,5,8,4,2],
总和=0;
对于(变量i=0;i
这里有一个获取详细信息的函数。可以使用子字符串提取字段,然后根据规则进行调整。我将由您决定如何正确格式化输出:

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);
}

到目前为止你试过什么?我不明白这就是为什么我在这里问。你能指导我吗?是的,我们可以帮你写代码,但我们不能为你写代码。请尝试一些东西,让我们看看你的尝试,即使它不起作用。
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);
}