如何使用替换函数 javascript 生成随机数? [复制]
Posted
技术标签:
【中文标题】如何使用替换函数 javascript 生成随机数? [复制]【英文标题】:how can i generate randome number using replace function javascript? [duplicate] 【发布时间】:2021-09-12 11:46:03 【问题描述】:我是 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
我错过了什么?
【问题讨论】:
字符串'/[xy]/g'
是否存在?不...你想要一个正则表达式.../[xy]/g
正确使用正则表达式格式/[xy]/g
而不是'/[xy]/g'
【参考方案1】:
您在替换函数中使用字符串而不是正则表达式,这应该是一个简单的修复,例如换个方式
.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>
【讨论】:
感谢@Terry Lennox 没问题,很高兴能为您提供帮助!以上是关于如何使用替换函数 javascript 生成随机数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何创建一个对 Javascript 中先前函数生成的内容作出反应的函数