javascript - 如何使用替换函数 javascript 生成随机数?
问题描述
我是 javascript 新手,我需要使用替换生成随机数,我可以尝试
function generateUUID() {
var dt = new Date().getTime()
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace('/[xy]/g', function (c) {
var r = (dt + Math.random() * 16) % 16 | 0
dt = Math.floor(dt / 16)
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16)
})
return uuid
}
这个函数总是返回xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
我错过了什么?
解决方案
您在替换函数中使用字符串而不是正则表达式,这应该是一个简单的修复,例如只需更改
.replace('/[xy]/g',
至
.replace(/[xy]/g,
function generateUUID() {
var dt = new Date().getTime()
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (dt + Math.random() * 16) % 16 | 0
dt = Math.floor(dt / 16)
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16)
})
console.log("uuid",uuid)
return uuid
}
console.log(generateUUID())
我还建议为此目的查看第三方库,例如uuid,它使用加密强的随机值。
function generateUUID() {
return uuid.v4();
}
console.log(generateUUID());
<script src="https://cdnjs.cloudflare.com/ajax/libs/uuid/8.3.2/uuid.min.js" integrity="sha512-UNM1njAgOFUa74Z0bADwAq8gbTcqZC8Ej4xPSzpnh0l6KMevwvkBvbldF9uR++qKeJ+MOZHRjV1HZjoRvjDfNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
推荐阅读
- excel - 每分钟复制范围(可以更改)
- sass - 如何在 Sass 中使用 @use 规则扩展占位符选择器
- ruby-on-rails - 在单独的模型 Rails 中查询两个不同的模型
- python - 如何用字符列表填充二维矩阵?
- javascript - crypto-js 中的 AES 解密返回空字符串
- ios - 水平条形图未移动到 X
- javascript - 如何使用 fetch 获取从 Firebase 函数返回的数据?
- reactjs - 材质 UI 选择分组菜单项 - 值不成立
- amazon-redshift - 如何解码位置和 sql 状态的 Redshift 错误?
- r - 根据另一列的最后一个值从一列返回值