我希望能够采用一个由字符串形式的数字组成的变量,例如将其称为 str
,并在其中每隔一个空格插入一个 1 到 10 之间的随机数那个字符串。现在我有这个代码:
str.toString().match(/.{1}/g).join((Math.floor((Math.random() * 10)
+ 1)).toString())
这几乎可以做到这一点,但是它会生成一个随机数并每次插入该随机数,而不是为每个其他空间生成新的随机数。例如,如果 str = '1234567890'
,我希望它变成类似 18293547596173889302
的内容,但我得到类似 182838485868789808
的内容。任何帮助将不胜感激,谢谢!
最佳答案
您显示的代码计算 (Math.floor((Math.random() * 10)
+ 1)).toString()
部分一次,并将结果传递给 .join()
方法。
我会考虑使用字符串 .replace()
方法,因为这样您就可以使用每次替换都会调用一次的函数:
var str = '1234567890'
var output = str.replace(/./g, function(m) {
return m + Math.floor((Math.random() * 10) + 1)
})
console.log(output)
/./g
匹配每个字符,一次一个,并且匹配的字符将传递给回调函数,以便您可以在替换中使用它。
请注意,+
连接运算符会自动将随机数转换为字符串,因此您无需自己调用 .toString()
。
编辑:请注意,您的原始 .join()
代码在现有数字之间插入了新数字,因此在之后没有添加任何内容输入的最后一个字符,但您的示例输出在每个现有数字(包括最后一个数字)之后添加了一个随机数字。我的代码执行后者。如果您不想在末尾添加最后一个随机数字,可以通过对结果调用 .slice(0, -1)
将其删除。
关于javascript - 在 JavaScript 中每隔一个空格插入随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45093976/