在JavaScript中插入每隔一个空格的随机数

时间:2017-07-14 03:14:25

标签: javascript string random

我希望能够以字符串形式获取一组数字的变量,例如将其称为str,并在该字符串中的每隔一个空格中插入1到10之间的随机数。现在我有这个代码:

str.toString().match(/.{1}/g).join((Math.floor((Math.random() * 10) 
+ 1)).toString())

这几乎可以做到,但它会生成一个随机数并每次都插入,而不是为每个其他空间生成新的随机数。例如,如果str = '1234567890',我希望它变成类似18293547596173889302的东西,而是我得到像182838485868789808这样的东西。任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:2)

您展示的代码会计算(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)来删除它。

答案 1 :(得分:1)

您可以使用这样的地图

var str = '1234567890';
var result = str.toString().split('').map(n => n + (Math.floor((Math.random() * 10) 
+ 1))).join('');
console.log(result);