我想每次提交表单时都生成一个格式为 'ZXCVBN' 的随机字符串
I want to generate a random string of format 'ZXCVBN' every time on form submission
我想在每次提交表单时生成一个格式为 'ZXCVBN' 的随机字符串,并分配给 add-event.comonent.ts 文件中事件数组的 'code' 参数。我应该怎么做?
代码必须恰好由 6 个大写随机字母组成。
添加-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);
}
}
<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>
这是一个解决方案,将其添加到您的代码中
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,1,2,3,4,5,6].map(x=>'ABCDEFGHIJKLMNOPQRSTUVZ'
.substr(Math.floor(23*Math.random()),1))
.join('')
这应该是一个简单的方法:
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)
基本上我有一串字母,我使用了一个运行 6 次的循环。每次我得到一个 0 到 25 之间的随机数 [都包括在内] 并使用 charAt()
找到该位置的字符。所有的字母组合成一个字符串。
我想在每次提交表单时生成一个格式为 'ZXCVBN' 的随机字符串,并分配给 add-event.comonent.ts 文件中事件数组的 'code' 参数。我应该怎么做?
代码必须恰好由 6 个大写随机字母组成。
添加-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);
}
}
<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>
这是一个解决方案,将其添加到您的代码中
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,1,2,3,4,5,6].map(x=>'ABCDEFGHIJKLMNOPQRSTUVZ'
.substr(Math.floor(23*Math.random()),1))
.join('')
这应该是一个简单的方法:
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)
基本上我有一串字母,我使用了一个运行 6 次的循环。每次我得到一个 0 到 25 之间的随机数 [都包括在内] 并使用 charAt()
找到该位置的字符。所有的字母组合成一个字符串。