Javascript 使用子字符串生成4位随机数

Javascript 使用子字符串生成4位随机数,javascript,jquery,Javascript,Jquery,我正在尝试执行以下代码: var a = Math.floor(100000 + Math.random() * 900000); a = a.substring(-2); 我在第2行遇到了类似于undefined不是函数的错误,但当我尝试执行alert(a)时,它有一些东西。这里怎么了?你的a是一个数字。要能够使用子字符串函数,它必须是字符串,请首先尝试 var a = (Math.floor(100000 + Math.random() * 900000)).toString(); a =

我正在尝试执行以下代码:

var a = Math.floor(100000 + Math.random() * 900000);
a = a.substring(-2);

我在第2行遇到了类似于
undefined不是函数的错误,但当我尝试执行
alert(a)
时,它有一些东西。这里怎么了?

你的
a
是一个数字。要能够使用
子字符串
函数,它必须是
字符串
,请首先尝试

var a = (Math.floor(100000 + Math.random() * 900000)).toString();
a = a.substring(-2);

这是因为
a
是一个数字,而不是字符串。您可能想做的事情如下:

var val=Math.floor(1000+Math.random()*9000);

控制台日志(val)
您可以通过这种方式获得4位数的
.substring(startIndex,length)
,在您的情况下就是
。substring(0,4)
。要能够使用
.substring()
,您需要使用
.toString()
a
转换为字符串。最后,您可以使用
parseInt
将结果输出转换为整数:

 var a = Math.floor(100000 + Math.random() * 900000)
 a = a.toString().substring(0, 4);

 a =  parseInt(a);

 alert(a);

问题在于
a
是一个数字。无法将
子字符串
应用于数字,因此必须将数字转换为字符串,然后应用该函数

演示:

$(文档).ready(函数(){
var a=数学地板(100000+数学随机()*900000);
a=字符串(a);
a=a.子串(0,4);
警惕(“勇气:+a”);
});

这将使用子字符串生成4位随机数(0000-9999):

var seq = (Math.floor(Math.random() * 10000) + 10000).toString().substring(1);
console.log(seq);
//它将生成随机的5位数字和字符
const char='1234567890abcdefghijklmnopqrstuvxyz'//随机生成每次从这个给定的字符
常数长度=5;
让随机值=“”;
for(设i=0;i
我对Balajis进行了调整,使其具有不可变性和功能性

因为这不使用数学,所以你可以使用字母数字、表情符号、很长的别针等等

const getRandomPin = (chars, len)=>[...Array(len)].map(
   (i)=>chars[Math.floor(Math.random()*chars.length)]
).join('');


//use it like this
getRandomPin('0123456789',4);

alert(a)
有什么?
Math.floor
返回一个数字。数字没有
子字符串
方法。这会生成一个6位数而不是4位数的数字。它也不会创建一个数字,而是一个字符串。您的演示清楚地表明,您的解决方案会生成一个长度为6的字符串。是的,这正是我要说的,OP想要创建一个4位数的数字。要记住,当你做一个数学逻辑时,你可能会收到一个int或double的数据类型,因此你必须将结果转换为字符串,由substring函数处理,希望这个帮助显示这与erkaner的解决方案不同吗?
$(document).ready
调用在这里是不必要的。如果您在jquery代码中使用它,那么您是对的,否则就没有必要了。我无法重新生成以零开头的代码,例如
0123
@5ervant,这将是一个3位数字。(从数学上讲,前导0无关紧要。)它将从长度为5的char变量生成随机值&在循环中,它将检查长度并从char变量生成随机5位值,并将其转换为大写
$(document).ready(function() {
  var a = Math.floor((Math.random() * 9999) + 999);
  a = String(a);
  a = a.substring(0, 4);
});
// It Will Generate Random 5 digit Number & Char 
const char = '1234567890abcdefghijklmnopqrstuvwxyz'; //Random Generate Every Time From This Given Char
const length = 5;
let randomvalue = '';
for ( let i = 0; i < length; i++) {

    const value = Math.floor(Math.random() * char.length);

    randomvalue += char.substring(value, value + 1).toUpperCase();

}

console.log(randomvalue);
const getRandomPin = (chars, len)=>[...Array(len)].map(
   (i)=>chars[Math.floor(Math.random()*chars.length)]
).join('');


//use it like this
getRandomPin('0123456789',4);