Я хочу генерировать случайную строку формата 'ZXCVBN' каждый раз при отправке формы - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу генерировать случайную строку формата 'ZXCVBN' каждый раз при отправке формы и присваивать параметру 'code' массива событий в файле add-event.comonent.ts. Как мне это сделать?

Код должен состоять ровно из 6 случайных букв в верхнем регистре.

add-event.component.ts: -

export class AddEventComponent implements OnInit {

  event: Event = {
    code: '',
    name:'',
    password:'',
    pollCat:''
  }
  constructor(private eventService : EventsService) { }

  ngOnInit() {
  }

  onSubmit()
  {
    if(this.event.name !="" && this.event.password !="")
    {
      this.eventService.addEvent(this.event);
      this.event.name = '';
      this.event.password = '';
    }
  }
}

events.service .ts: -

  @Injectable({
  providedIn: 'root'
})
export class EventsService {

  eventsCollection : AngularFirestoreCollection<Event>;
  events: Observable<Event[]>;

  constructor(public afs: AngularFirestore) { 

    this.eventsCollection = this.afs.collection<Event>('Events');
    this.events = this.eventsCollection.snapshotChanges().pipe(
    map(changes => {
      return changes.map(a => {
        const data = a.payload.doc.data() as Event;
        data.id = a.payload.doc.id;
        return data;
      })
    })); 
  }

  getEvents()
  {
    return this.events;
  }

  addEvent(event: Event)
  {
    this.eventsCollection.add(event);
  }
}

Ответы [ 4 ]

1 голос
/ 16 апреля 2020

Это простой метод:

let randomString: string = ""

const alphabetsString: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

    for (let i = 0; i < 6; i++) {
        let randomNum: number =  Math.floor(Math.random() * (25 - 0 + 1)) + 0;

        let newChar = alphabetsString.charAt(randomNum)

        randomString = randomString.concat(newChar)
    }

//Return the value as per your program. I have used console.log(randomString)

В основном у меня есть строка алфавитов, и я использовал al oop, который выполняется 6 раз. Каждый раз, когда я получаю случайное число от 0 до 25 [оба включены], я нахожу персонажа в этой позиции, используя charAt(). Все буквы объединены в строку.

1 голос
/ 16 апреля 2020

Вот решение, добавьте это к своему коду

function generateCode(length) {
       var result           = '';
       var characters       = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
       var charactersLength = characters.length;
       for ( var i = 0; i < length; i++ ) {
          result += characters.charAt(Math.floor(Math.random() * charactersLength));
       }
       return result;
}
console.log(generateCode(6))    
0 голосов
/ 16 апреля 2020
[0,1,2,3,4,5,6].map(x=>'ABCDEFGHIJKLMNOPQRSTUVZ'
               .substr(Math.floor(23*Math.random()),1))
               .join('')

стекаблиц

0 голосов
/ 16 апреля 2020

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js">
  function generateRandomString(length) {
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    for (var i = 0; i < length; i++)
      text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
  }

</script>
...