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
数据结构来存储 a
、b
、...g
。
然后"map"这个数组由(8- indexOfItem) * item
所以,对于索引 = 0 的 1ˢᵗ 项目,我们将有 (8 - 0) * a
-➡ 8* a
.
第 2ⁿᵈ 项 ➡ (8 -1) * b
➡ 7 *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);
我为捷克税号 (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
数据结构来存储a
、b
、...g
。然后"map"这个数组由
(8- indexOfItem) * item
所以,对于索引 = 0 的 1ˢᵗ 项目,我们将有
(8 - 0) * a
-➡8* a
.第 2ⁿᵈ 项 ➡
(8 -1) * b
➡7 *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);