如何使用javascript为发票编号每次生成唯一编号
尝试使用javascript为发票编号生成从1000到500000的唯一编号。因此,我可以选择带有时间和随机编号的今天日期。这是正确的方法吗?怎么做? 发票编号长度应为4到6如何使用javascript为发票编号每次生成唯一编号,javascript,Javascript,尝试使用javascript为发票编号生成从1000到500000的唯一编号。因此,我可以选择带有时间和随机编号的今天日期。这是正确的方法吗?怎么做? 发票编号长度应为4到6 var d = new Date(); var t = new Date().getTime(); var randomnum = Math.floor(Math.random() * (1000 - 500000)) + 1000; randomnum = d.getFullYear() + f(d.getMonth
var d = new Date();
var t = new Date().getTime();
var randomnum = Math.floor(Math.random() * (1000 - 500000)) + 1000;
randomnum = d.getFullYear() + f(d.getMonth()+1) + f(d.getDate()) + randomnum;
randomnum = randomnum + t;
console.log(randomnum);
或者完全跳过数字,除非您需要易读的人类格式(当您生成非连续数字时,它不会出现)。我建议改为使用GUID 它可以这样使用:
import v4 from "uuid/v4";
const id = v4();
GUI在2.7e18代之后有50%的冲突风险。您可以使用下面的函数生成
字符串
ID。但我不喜欢它。您应该使用从1到500000的整数增量
/**
*
* @param {number} min
* @param {number} max
*
* @returns {string}
*/
const getRandomId = (min = 0, max = 500000) => {
min = Math.ceil(min);
max = Math.floor(max);
const num = Math.floor(Math.random() * (max - min + 1)) + min;
return num.toString().padStart(6, "0")
};
console.log(getRandomId()); // 350845, 000845
/**
*
* @param {number} min
* @param {number} max
*
* @returns {number}
*/
const getRandomId = (min = 1000, max = 500000) => {
min = Math.ceil(min);
max = Math.floor(max);
const num = Math.floor(Math.random() * (max - min + 1)) + min;
return num;
};
console.log(getRandomId()); // 2151, 464128
下面的这个函数可以用来生成从1到500000的id。就像MySQL中的int增量一样。但当数字为1时,此函数将其转换为字符串000001
/**
*
* @param {number} num
*
* @returns {string}
*/
const getId = (num) => {
return num.toString().padStart(6, "0")
};
console.log(getId(1)); // 000001
这就是你问题的答案。如何生成从1000到500000的唯一数字
/**
*
* @param {number} min
* @param {number} max
*
* @returns {string}
*/
const getRandomId = (min = 0, max = 500000) => {
min = Math.ceil(min);
max = Math.floor(max);
const num = Math.floor(Math.random() * (max - min + 1)) + min;
return num.toString().padStart(6, "0")
};
console.log(getRandomId()); // 350845, 000845
/**
*
* @param {number} min
* @param {number} max
*
* @returns {number}
*/
const getRandomId = (min = 1000, max = 500000) => {
min = Math.ceil(min);
max = Math.floor(max);
const num = Math.floor(Math.random() * (max - min + 1)) + min;
return num;
};
console.log(getRandomId()); // 2151, 464128
使用date day和random可能不够抗碰撞。碰撞的可能性太大。您将需要使用递增的id。尽管我怀疑如果您不跟踪id以防止冲突,4到6位数字可能不足以使用。uuid生成符合RFC 4122的内容,如果您想要符合标准和值得信赖的内容。@user120242:创建发票号唯一的最佳方法是什么?最好的方法是简单地递增,如他所说:1000、1001、1002、1003等。无需随机化发票号。它们对隐私不敏感,这只会让你的管理工作变得更加复杂。@icecub:如何增加唯一的数字?@icecub:我是在问随机数字应该是有序的和唯一的,比如100010011002等……如何使用uuid增加唯一的数字?