Javascript - 使用特定公式对 11 取模创建数字

Javascript - Creating number with specific formula modulo11

我为捷克税号 (IČO) 创建了以下生成器。我知道在 javascript 中肯定有更好的编码方式。我是初学者,我想看看如何正确编写我的代码。该数字是用特殊公式创建的,它有 8 位数字,最后一位数字基于模 11,如下面的代码所示。

感谢您的回复。

 //Generation of single random numbers as variables
 var a = Math.floor(Math.random() * 10);
 var b = Math.floor(Math.random() * 10);
 var c = Math.floor(Math.random() * 10);
 var d = Math.floor(Math.random() * 10);
 var e = Math.floor(Math.random() * 10);
 var f = Math.floor(Math.random() * 10);
 var g = Math.floor(Math.random() * 10);
 //Formula for tax number
 var formula = a * 8 + b * 7 + c * 6 + d * 5 + e * 4 + f * 3 + g * 2;
 var modulo11 = formula % 11;
 if (modulo11 === 0) {
   var h = 1;
 } else if (modulo11 === 1) {
   var h = 0;
 } else {
   var h = 11 - modulo11;
 };
 //Completing tax number
 var identificationNumber = "" + a + b + c + d + e + f + g + h;
 //displaying number in console
 console.log(identificationNumber);

  • 利用 Array 数据结构来存储 ab、...g

  • 然后"map"这个数组由(8- indexOfItem) * item

    所以,对于索引 = 0 的 1ˢᵗ 项目,我们将有 (8 - 0) * a -➡ 8* a.

    第 2ⁿᵈ 项 ➡ (8 -1) * b7 *b

    ...等等。

  • 然后用"reduce"计算和.

  • 然后用"join"代替""+ a +b + ....+ g+ h

function getH(modulo11) {
 if (modulo11 === 0)  return 1;
 if (modulo11 === 1)  return 0;
 return 11 - modulo11;
}

//Generation of single random numbers as variables
const numbers= Array.from({length: 7},(v, k) =>Math.floor(Math.random() * 10))  

 //Formula for tax number
const formula= numbers.map((n, i) => (8 - i) * n).reduce((total, next) => total+ next , 0)// alternative of sum : a * 8 + b * 7 + c * 6 + d * 5 + e * 4 + f * 3 + g * 2

const h= getH(formula % 11);

 //Completing tax number
const identificationNumber = [...numbers, h].join('');
 //displaying number in console
 console.log(identificationNumber);