【发布时间】:2019-09-13 16:25:22
【问题描述】:
下面的代码创建了一个随机的客户编号并使用简单的控制台日志将其打印出来,但缺少一个功能:它应该检查之前是否已经生成了相同的客户编号/ID。如果是这样,它应该再次遍历该过程,因此生成一个新的随机数,该随机数是唯一的。我怎么能用这段代码做到这一点?作为一个编程新手,不幸的是我不知道我怎么能做到这一点。也许是一个while循环并将生成的数字存储在一个变量中?如果您可以提供代码,结合我的代码或构建重复检查功能,那将是非常棒的。
function generateCostumerNum() {
// generating a random 8-digit number with numbers from 1 to 9
var zeroToNine = "";
for (counter = 0; counter <= 7; counter++) {
var randomNumber = Math.floor(Math.random() * 9) + 1;
zeroToNine += randomNumber;
}
// calculating the cross-sum of the generated number above
var numberforCrossSum = zeroToNine,
crossSum = 0;
while (numberforCrossSum) {
crossSum += numberforCrossSum % 10;
numberforCrossSum = Math.floor(numberforCrossSum / 10);
}
// building together the final costumer ID string.
var finalCostumerNum = "ID" + zeroToNine + crossSum;
console.log(finalCostumerNum);
};
generateCostumerNum();
【问题讨论】:
-
你想如何持久化数据?在数据库中?在客户端上?
-
对于内存:尝试对象即集合(传统)或集合。否则,将需要某种形式或持久性或一种方法来“以‘保证’唯一性生成”。
-
@daddygames 在客户端使用纯 JavaScript
-
查找代码以生成 UUID。如果您要随机创建 id 编号,那么再次检查所有以前的 id 就没有什么可做的了,因为好吧,是随机的。但是如果这些没有存储在任何地方,并且只对那个会话有效,那么只需使用一个整数并每次都以客户 ID 1 开头。因此
How do you want to persist the data问题。customer这个词让我觉得有钱。如果这是真的,我应该说他做客户端可能是个坏主意。 -
你了解
scope对于JavaScript变量的概念吗?你知道如何使用localStorage吗?你了解如何在 JavaScript 中使用数组吗?即使关闭浏览器或刷新页面,您是否希望客户 ID 保持不变?
标签: javascript loops scope