【问题标题】:Insert Random Number Every Other Space in JavaScript在 JavaScript 中每隔一个空格插入随机数
【发布时间】:2017-07-14 03:14:25
【问题描述】:

我希望能够获取一个变量,它是一组字符串形式的数字,例如调用它str,并在该字符串中每隔一个空格插入一个介于 1 和 10 之间的随机数。现在我有这个代码:

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

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

【问题讨论】:

    标签: javascript string random


    【解决方案1】:

    您显示的代码计算(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-10 而不是 0-9 似乎有点奇怪,因为这意味着输出的总长度是可变的,具体取决于随机选择 10 的次数,但是如果这就是你想要的,那就是你所拥有的。)
    • 哦,真的谢谢你也哈哈。要解决这个问题,我应该删除 + 1 吗?
    • 是的,删除 +1。另请参阅我的编辑,其中涉及在输入中的每个字符 between 插入随机数字和在输入中的每个字符 after 添加随机数字之间的区别...
    • 是的。我想在每个其他字符之后有一个随机数字,所以以随机字符结尾是想要的结果
    【解决方案2】:

    你可以像这样使用地图

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

    【讨论】:

      猜你喜欢
      • 2018-02-06
      • 2014-08-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多