Запуск случайных символов в одной строке

Как заголовок. Я пробовал следующий javascript.

Это вызовет console.info () одно и то же случайное число 20 раз, но как мне найти 20 случайных символов? Используем ли мы функцию обратного вызова?

var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var insert = letters.charAt(Math.floor(Math.random() * letters.length));

var str = "0";

for (i = 0; i < 20; i++) {

  setTimeout(function() {
    var newStr = str.replace(/./, insert);
    console.info(newStr)
  }, 50 * i)

}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта строка:

var insert = letters.charAt( Math.floor(Math.random()*letters.length) );

выполняется один раз и только один раз. Он не запускает случайную часть заново каждый раз, когда вы запрашиваете значение insert.

Вы можете повторно запускать его вручную в каждом цикле:

var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var str = "0";
for(i=0; i<20; i++) {

    setTimeout(function(){
      var insert = letters.charAt( Math.floor(Math.random()*letters.length) );
      var newStr = str.replace(/./, insert);
      console.info(newStr)
    }, 50*i)

}

Но имейте в виду, что вы можете получить один и тот же символ более одного раза, поскольку по определению он (псевдо) случайный - и, следовательно, вы можете выбрать тот же символ, который был выбран ранее.

Чтобы гарантировать получение случайного символа отчетливый каждый раз, вам придется удалить выбранный символ из списка. Проще сделать, преобразовав символы в массив и используя splice, чтобы удалить его после выбора:

var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split("");
var str = "0";
for(i=0; i<20; i++) {

    setTimeout(function(){
      var insert = Math.floor(Math.random()*letters.length);
      var newStr = str.replace(/./, letters[insert]);
      console.info(newStr)
      letters.splice(insert,1);
    }, 50*i)

}

Ух ... Понятно, такой глупый вопрос. Эта псевдослучайная строка могла бы служить цели. Большое спасибо за помощь!

Dylan Hsiao 23.04.2018 18:55

Другие вопросы по теме