Как генерировать случайный string JavaScript?

212
04 мая 2018, 12:22

Нужно получить случайный набор букв и цифр (string), заданной длинны, например 10. Как можно такое реализовать в JS?

Answer 1

Хотелось бы увидеть Ваши попытки реализации.
А так - это просто: берём нужный диапазон (-ы) и циклом генерируем случайное значение из него.

let range = (start, end) => [...Array(end - start).keys(), end - start].map(n => start + n); 
let A = range(65, 90);   // A-Z 
let a = range(97, 122);  // a-z 
let dig = range(48, 57); // 0-9 
let all = A.concat(a).concat(dig); // Склеиваем в один 
 
function generateString(length = 10){ 
  let str = ''; 
   
  for(let i = 0; i < length; i++){ 
    str += String.fromCharCode(all[Math.floor(Math.random() * all.length)]); // Берём случайное число, преобразуем в соответствующий символ и добавляем к строке 
  } 
   
  return str; 
} 
 
console.info(generateString(15));

Answer 2

Как вариант, можно так:

var random = Math.random().toString(36).substr(2, 10); 
console.info(random);

Answer 3

Я для себя написал такой код... и не стесняюсь этого)

function createRandomString(sumString){ 
const symbolArr = "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"; 
var randomString = ""; 
for (let i=0; i<sumString; i++){ 
	var index = Math.floor(Math.random()*symbolArr.length); 
	randomString +=symbolArr[index]; 
} 
return randomString; 
} 
 
console.log(createRandomString(10));

А так, как Вы хотели посмотреть на другие реализации - вот решение этой задачи в стиле ООП

'use strict'; 
 
class hashGenerator { 
// startSymbolCode (int) 
// finishSymbolCode (int) 
// hashLength (int) 
// hash - (string || false) 
constructor (hashLength) { 
	this.startSymbolCode = 48; 
	this.finishSymbolCode = 126; 
	if (  !isNaN(parseInt(hashLength))  ){ 
		this.hashLength = parseInt(hashLength); 
		this.generateHash(); 
	} 
	else { 
		this.hash = false; 
	} 
} 
 
randomInteger(min, max) { 
	var rand = min - 0.5 + Math.random() * (max - min + 1) 
	rand = Math.round(rand); 
	return rand; 
} 
 
generateHash (){ 
	this.hash = ''; 
	for(let i=0; i<this.hashLength; i++){ 
		this.hash += String.fromCharCode(this.randomInteger(this.startSymbolCode,this.finishSymbolCode)); 
	} 
} 
} 
let hash = new hashGenerator(10); 
console.log (hash.hash);

Код взят отсюда https://www.youtube.com/watch?v=m-stCtAm-SU&t=925s

READ ALSO
Как сделать баннер адаптивным только по высоте?

Как сделать баннер адаптивным только по высоте?

Нужно создать html-5 баннер в Adobe Animate с фиксированной шириной (300px) и адаптивной высотой (минимальная высота должна оставаться 600px)Animate при настройке...

229
Сетка типа bootstrap только на 1920px

Сетка типа bootstrap только на 1920px

Кто то использовал 12 колоночную сетку только не на 1200px, а на 1920pxНе full-page, а именно 1920 ? Или для таких задач лучше создавать свою сетку ? Кто сталкивался?

208
не срабатывает скрипт на клик по кнопке

не срабатывает скрипт на клик по кнопке

при клике на процессор открывается модальное окно, и если кликать по кнопке в модальном этот скрипт не срабатывает

218
При подключении API Telegram к node.js

При подключении API Telegram к node.js

Помогите пожалуйста! Установил программу Nodejs, потом создал папку, установил в нее сервер nvm (команда npm init), далее туда же установил библиотеку...

221