我正在尝试执行以下代码:
var a = Math.floor(100000 + Math.random() * 900000);
a = a.substring(-2);
我在第2行收到undefined is not a function
之类的错误,但是当我尝试alert(a)
时,它有一些东西。这有什么不对?
答案 0 :(得分:62)
那是因为a
是一个数字,而不是一个字符串。您可能想要做的是这样的事情:
var val = Math.floor(1000 + Math.random() * 9000);
console.log(val);

Math.random()
将生成[0,1]范围内的浮点数(请注意,1从范围中排除)。一般情况
如果要生成[x,y]范围内的整数,可以使用以下代码:
Math.floor(x + (y - x) * Math.random());
答案 1 :(得分:4)
这将使用子字符串生成4位随机数(0000-9999):
var seq = (Math.floor(Math.random() * 10000) + 10000).toString().substring(1);
console.log(seq);
答案 2 :(得分:1)
$( document ).ready(function() {
var a = Math.floor(100000 + Math.random() * 900000);
a = String(a);
a = a.substring(0,4);
alert( "valor:" +a );
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
&#13;
答案 3 :(得分:0)
您的a
是一个数字。为了能够使用substring
函数,首先必须是string
,尝试
var a = (Math.floor(100000 + Math.random() * 900000)).toString();
a = a.substring(-2);
答案 4 :(得分:0)
您可以通过.substring(startIndex, length)
这样的方式获得4位数,这将是您.substring(0, 4)
的情况。为了能够使用.substring()
,您需要使用a
将.toString()
转换为字符串。最后,您可以使用parseInt
:
var a = Math.floor(100000 + Math.random() * 900000)
a = a.toString().substring(0, 4);
a = parseInt(a);
alert(a);
答案 5 :(得分:0)
问题是a
是一个数字。您不能将substring
应用于某个数字,因此您必须将该数字转换为字符串,然后应用该函数。
DEMO:https://jsfiddle.net/L0dba54m/
var a = Math.floor(100000 + Math.random() * 900000);
a = a.toString();
a = a.substring(-2);
答案 6 :(得分:0)
$(document).ready(function() {
var a = Math.floor((Math.random() * 9999) + 999);
a = String(a);
a = a.substring(0, 4);
});
答案 7 :(得分:0)
// 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);
答案 8 :(得分:0)
我改编了Balajis,使其不可变且实用。
因为它不使用数学运算,所以可以使用字母数字,表情符号,长针等。
const getRandomPin = (chars, len)=>[...Array(len)].map(
(i)=>chars[Math.floor(Math.random()*chars.length)]
).join('');
//use it like this
getRandomPin('0123456789',4);