Генерация случайной строки/символов в JavaScript
Я хочу создать строку длиной 5 символов, составленную из символов, случайно выбранных из набора [a-zA-Z0-9]
.
Какой лучший способ сделать это с помощью JavaScript?
5 ответ(ов)
Я думаю, этот код подойдет для вашего запроса:
function makeid(length) {
let result = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const charactersLength = characters.length;
let counter = 0;
while (counter < length) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
counter += 1;
}
return result;
}
console.log(makeid(5));
Эта функция makeid
генерирует строку случайной длины, состоящую из букв латинского алфавита и цифр. Вы можете указать нужную длину строки в параметре length
. В приведенном примере вызов makeid(5)
создаст строку длиной 5 символов.
Кратко, просто и надежно
Возвращает ровно 5 случайных символов, в отличие от некоторых из самых популярных ответов, представленных здесь.
Math.random().toString(36).slice(2, 7);
Что-то вроде этого должно сработать:
function randomString(len, charSet) {
charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var randomString = '';
for (var i = 0; i < len; i++) {
var randomPoz = Math.floor(Math.random() * charSet.length);
randomString += charSet.substring(randomPoz, randomPoz + 1);
}
return randomString;
}
Вы можете вызвать функцию с набором символов по умолчанию [a-zA-Z0-9] или передать свой собственный:
var randomValue = randomString(5);
var randomValue = randomString(5, 'PICKCHARSFROMTHISSET');
Этот код генерирует случайную строку заданной длины из указанных символов.
Вы можете использовать следующий код для генерации случайной строки заданной длины с использованием цифр и букв нижнего и верхнего регистра:
function randomstring(L) {
var s = '';
var randomchar = function() {
var n = Math.floor(Math.random() * 62);
if (n < 10) return n; // 0-9
if (n < 36) return String.fromCharCode(n + 55); // A-Z
return String.fromCharCode(n + 61); // a-z
}
while (s.length < L) s += randomchar();
return s;
}
console.log(randomstring(5));
Этот код состоит из функции randomstring
, которая генерирует строку длиной L
. Внутри этой функции определена randomchar
, которая создает случайный символ или цифру в зависимости от случайного числа, сгенерированного в диапазоне от 0 до 61. Если число меньше 10, возвращаются цифры от 0 до 9. Если число больше или равно 10 и меньше 36, возвращаются заглавные буквы от A до Z. Для значений от 36 до 61 возвращаются строчные буквы от a до z.
Вы можете изменить значение 5 в randomstring(5)
на любое другое, чтобы получить строку желаемой длины.
Чтобы удовлетворить требованию [a-zA-Z0-9]
и длине 5 символов, вы можете использовать следующий код:
Для браузера:
btoa(Math.random().toString()).substring(10, 15);
Для NodeJS:
Buffer.from(Math.random().toString()).toString("base64").substring(10, 15);
В результате будут получены строчные буквы, заглавные буквы и цифры.
(Код совместим с TypeScript)
Генерация случайных целых чисел в JavaScript в заданном диапазоне
Как перемешать (сделать случайным) массив в JavaScript?
Преобразование объекта JS в строку JSON
Как сгенерировать случайную алфавитно-цифровую строку
Как преобразовать строку, разделённую запятыми, в массив?