javascript - 在一个键 JSON 中存储多个数组值

标签 javascript html arrays json object

问题: 它是一个使用 HTML 注册新用户的表单。 我应该在一个 JSON 键(“user”键)中存储多个数组(包含“用户名:用户名,密码:密码,topScore:0)”,它现在所做的只是存储一个数组,如果我输入另一个数组只是覆盖当前的。

// In HTML the function is called:
//<form name = "signup" onsubmit="registerNewUser()>

var user = [];


function registerNewUser() {

/** Get the value of username, password and repeat password **/
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var passwordRepeat = document.getElementById("passwordRepeat").value;

/** boolean variable to check if the username already exits **/
var usernameExists = false;

/** if statement to check if password and passwordRepeat match **/
if (password == passwordRepeat) {

/** For loop to scan through registered users to check if username is already in use **/
for(let i = 0; i < user.length; i++) {
  if(user[i].name == username) {
    usernameExists = true;
  }
}
if (usernameExists) {
  alert("This user name already exists.");
}
else {
  /** Put array into users in JSON storage with username,password and score values **/
  user.push( {name: username, password: password, topScore: 0} );
  localStorage.setItem("user", JSON.stringify(user));
  alert("New account successfully created!");

  /** Set variable usernameExists to its original value **/
  usernameExists = false;
  }
}
  else {
    alert("Passwords do not match. Please try again.");
  }
}

最佳答案

我使用了你的代码并将其添加到 fiddle 。但我没有使用输入字段,而是使用全局变量并为其设置新值。

html:

<div id="userArray"></div>
<div id="localStorage"></div>

js:

var Username = 'Peter';
var Password = 'Parker';
var PasswordRepeat = 'Parker';

/** your function, but instead of input fields using my variables to set the respective variables inside the function **/

registerNewUser();
document.getElementById("userArray").innerHTML = JSON.stringify(user);
document.getElementById("localStorage").innerHTML = localStorage.getItem("user");

Username = 'Gwen';
Password = 'Stacy';
PasswordRepeat = 'Stacy';
registerNewUser();
document.getElementById("userArray").innerHTML = JSON.stringify(user);
document.getElementById("localStorage").innerHTML = localStorage.getItem("user");

registerNewUser();

它运行得非常好......除了 @HMR 和 @Shubham Jain 提到的事情之外。

您应该将数组重命名为用户,以便每个人都知道它包含多个用户,而不仅仅是一个。如果您不使用 localStorage 项初始化用户,那么将它们存储在那里还有什么意义。

我认为您只是在测试某些内容,这就是您将密码存储在 localStorage 中的原因。否则,最好将这些敏感信息存储在后端应用程序中。并对它们进行加密。

我本来会对此发表评论,但由于我的声誉低于 50,所以我不能:-(

关于javascript - 在一个键 JSON 中存储多个数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53534026/

相关文章:

javascript - 从 laravel 到 vue.js 验证后如何显示数组响应的错误(基于索引)

javascript - 为什么我不能将背景更改为 'true' 或在 Bootstrap 中更改为 'static' 后将其删除?

php - 我试图在我的 View 上显示从数据库获取的数据,但我无法显示它。 Laravel 10.x/

Java:如何比较两个 int[] 数组中的非重复元素?

php - 从数组字段更新表 - 代码用最后一个值填充所有字段

javascript - 更新图表中的数据(下拉)

javascript - 阻止 iframe 影响加载时间

php单选按钮值(电子邮件表单)

java - 将 Office 文档转换为 HTML,以便使用 JavaScript 在浏览器中查看

C++ 字符串追加问题