js 中随机生成不重复的数字ID
时间: 2024-02-20 19:57:47 浏览: 83
可以使用以下代码生成不重复的数字ID:
```javascript
function generateUniqueID() {
const usedIDs = new Set();
let id = Math.floor(Math.random() * 1000000);
while (usedIDs.has(id)) {
id = Math.floor(Math.random() * 1000000);
}
usedIDs.add(id);
return id;
}
```
这个函数会生成一个随机的数字ID,并且使用了一个 Set 来确保不重复。如果生成的 ID 已经在 Set 中存在了,就会继续生成新的 ID,直到找到一个未被使用的 ID。
相关问题
html中如何生成一堆随机文字,javascript 随机生成文字 怎么才能让他生成的不重复?...
要在 HTML 中生成一堆随机文字,你可以使用 JavaScript。你可以使用 Math.random() 函数来生成随机数,并使用 String.fromCharCode() 函数生成字符。下面是一个简单的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>随机文字</title>
</head>
<body>
<div id="random-text"></div>
<script>
var length = 10; // 生成的随机文字的数量
var text = '';
for (var i = 0; i < length; i++) {
var randomCharCode = Math.floor(Math.random() * 26) + 97; // 生成 a-z 的随机字符编码
var character = String.fromCharCode(randomCharCode);
text += character;
}
document.getElementById('random-text').innerHTML = text;
</script>
</body>
</html>
```
要确保生成的文字不重复,可以将生成的文字存储到一个数组中,并在生成新的随机文字时检查该数组中是否已经存在该字符。如果存在,则重新生成一个字符。下面是一个修改过的代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>随机文字</title>
</head>
<body>
<div id="random-text"></div>
<script>
var length = 10; // 生成的随机文字的数量
var text = '';
var usedCharacters = [];
for (var i = 0; i < length; i++) {
var character;
do {
var randomCharCode = Math.floor(Math.random() * 26) + 97; // 生成 a-z 的随机字符编码
character = String.fromCharCode(randomCharCode);
} while (usedCharacters.includes(character)); // 检查该字符是否已经被使用过
usedCharacters.push(character);
text += character;
}
document.getElementById('random-text').innerHTML = text;
</script>
</body>
</html>
```
uniapp随机生成id
### 在 UniApp 中生成随机 ID 的方法
#### 使用 UUID 方法
UUID (Universally Unique Identifier) 是一种标准的唯一标识符,广泛应用于各种编程场景中。在 UniApp 中可以利用现有的 JavaScript 库来创建 UUID。
```javascript
function generateUUID() {
let d = new Date().getTime();
if(window.performance && typeof window.performance.now === "function"){
d += performance.now(); // 使用高精度时间戳
}
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
const r = (d + Math.random()*16)%16 | 0;
d = Math.floor(d/16);
return (c=='x' ? r :(r&0x3|0x8)).toString(16);
});
}
console.log(generateUUID());
```
此函数会返回一个格式化的 UUID 字符串[^1]。
#### 利用 `Math.random()` 和 `Date.now()` 自定义组合方式
对于不需要严格遵循特定规格的情况,也可以通过简单的拼接当前时间和伪随机数值的方式来快速构建唯一的字符串作为 ID。
```javascript
function simpleRandomId(length=8){
const timestampPart = Date.now().toString(36); // 将毫秒级时间转换成基数为36的字符串表示形式
const randomPart = ('00000000'+(Math.random()*Math.pow(36,length)|0).toString(36)).slice(-length);
return `${timestampPart}-${randomPart}`;
}
console.log(simpleRandomId()); // 输出形如:"1a7b9e-fj2l"
```
这种方法简单高效,在大多数情况下能够提供足够的独特性和性能表现。
#### 引入 NanoID 库
如果项目允许外部依赖,则可以选择引入更专业的工具包比如 NanoID 来简化开发过程并提高安全性。NanoID 提供了紧凑且安全的方式用于生产短小精悍但又不易冲突的 ID。
首先安装 nano-id:
```bash
npm install nanoid
```
接着可以在页面或组件内按需加载模块:
```javascript
import {nanoid} from 'nanoid';
const id = nanoid(); // 默认长度为21位字符
console.log(id);
// 或者指定其他长度
const customLengthId = nanoid(10);
console.log(customLengthId);
```
这种方式不仅易于理解和维护,而且由于采用了先进的算法设计使得产生的 ID 更加难以预测和重复。
阅读全文