我真的只是在胡闹,但遇到了一个问题。我想在用户点击页面中的div时创建一个用户名。
我想让它把用户名存储在一个数组中。如果用户名已经存在于数组中,我想让它重新运行函数来创建一个新的用户名,直到它找到一个不存在的用户名,然后将其放入数组中。
我只是不知道如何实现这个功能。有谁能帮忙吗?谢谢你的帮助
$(document).ready(function() {
jQuery(function() {
var usernames = [];
function createUser() {
var i = Math.floor((Math.random() * 10) + 1);
var newUser = "Username" + i;
return newUser;
}
$(".CreateUser").click(function() {
var newUser = createUser();
if (jQuery.inArray(newUser, usernames) !== -1) {
newUser = createUser();
console.log("User Exists");
} else {
usernames.push(newUser);
$(".Usernames").append("<br>" + newUser);
console.log(usernames);
console.log("User Added");
}
});
});
});
解决方案:
我们可以使用while循环,但我不建议在你的函数中使用它,所以更好的方法是制作一个带有初始值的函数,这样每次你点击按钮时,用户名就会改变。
function createUser(i) {
var newUser = "Username" + i;
return newUser;
}
$(document).ready(function () {
var usernames = [];
//initial value
var i = 1;
$(".CreateUser").click(function () {
var newUser = createUser(i);
//increase the initial value so next username will be increased by 1
i += 1;
usernames.push(newUser);
$(".Usernames").append("<br>" + newUser);
console.log(usernames);
console.log("User Added");
});
});
检查这个 例子我把它做得尽可能简单。
要在一个数组中进行检查,你可以使用包含方法
var user_in_array = usernames.includes(newUser) // returns true of false
生成一个随机字符串,并检查它是否存在。
function createUser() {
var random_txt = Math.random().toString(36).substring(2);
var newUser = "Username_" + random_txt;
return newUser;
}
$(document).ready(function () {
var usernames = [];
//initial value
$(".CreateUser").click(function () {
var newUser = createUser();
//increase the initial value so next username will be increased by 1
while (usernames.includes(newUser)) {
newUser = createUser();
}
usernames.push(newUser);
$(".Usernames").append("<br>" + newUser);
console.log(usernames);
console.log("User Added");
});
});
实例 此处