【问题标题】:Javascript generate random string /charactersJavascript生成随机字符串/字符
【发布时间】:2016-08-07 21:24:18
【问题描述】:

我需要一些简单的代码,当生成唯一的 16 个数字必须是 0-9 个数字时发出警报

【问题讨论】:

  • 我查看了这个链接,我投了答案,但不算数

标签: javascript string random character


【解决方案1】:

可以创建一个对象来存储数字、大写、小写字符串;将引用对象属性名称的数组传递给rand,使用Array.prototype.reduce() 连接成单个字符串。将60改为累加字符串.length

function rand(filter, length, current) {
  current = current ? current : '';
  var types = {
    number: "0123456789",
    uppercase: "ABCDEFGHIJKLMNOPQRSTUVWXTZ",
    lowercase: "abcdefghiklmnopqrstuvwxyz"
  };
  var r = (filter[0] === "all" ? Object.keys(types) : filter).reduce((s, t) => {
    s += types[t];
    return s
  }, "")
  return length ? rand(filter, --length
  , r.charAt(Math.floor(Math.random() * r.length)) + current) : current;
}
alert(rand(["number"], 16));
alert(rand(["number", "uppercase"], 16));
alert(rand(["all"], 16));

【讨论】:

  • 感谢您的代码,我在 js fiddle 上尝试过,但没有任何反应,我仍在学习 javascript
  • “我在 js fiddle 上试过,但没有任何反应” 你试过 stacksn-ps 吗?您可以发布指向 jsfiddle 的链接吗?
  • jsfiddle.net/oco87pbu这里是jsfiddle,sn-p有错误
  • @JackZaraf 用function(){} 替换箭头函数()=> .reduce() 调用jsfiddle.net/oco87pbu/1
  • 谢谢现在数字很好用,你能帮我把大写字母和数字组合成 16
【解决方案2】:

使用 Math.random():

function rand() {
    n = Math.random()*1e17;
    return (n+"").substr(1,16);
}

基本上生成一个0到1之间的随机数,乘以1e17得到17位,然后取最后16位。这样做是因为如果您只取前 16 个随机数字,则第一个数字可能是 0 并且不会被转换为字符串(因为不保留整数上的前导 0)。所以改为 17,然后取回 16。

【讨论】:

  • 我忽略了alert()。这是一个为您提醒号码的工作小提琴:jsfiddle.net/xeezp1sx
  • 太棒了 :) 很高兴听到。
猜你喜欢
  • 2010-11-23
  • 2017-08-01
  • 2011-06-30
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多