You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询在localStorage中追加存储用户对象的代码可行性

你的注册表单localStorage存储逻辑修正方案

嘿,你的思路方向是对的,但代码里有两个关键小问题会导致它没法正常工作,咱们来一步步理清楚并修正:

现有代码的核心问题

  • 键名不统一:你读取localStorage时用的键是'Користувачі',但存储时用的是'Users',这会导致永远读不到已有的用户数据,每次都会走if(!clientsArr)分支,直接覆盖存储单个对象,根本没法实现累加用户的效果。
  • 存储格式不一致:第一次存储的是单个clientObj对象,而非数组。等后续提交时,尝试调用clientsArr.push(clientObj)会直接报错——因为对象没有push方法,只有数组才有。

修正后的可行代码

const registrationForm = document.getElementById('registration');
registrationForm.addEventListener('submit', e => {
  e.preventDefault();
  // 获取表单输入值
  const regName = document.querySelector(".registration__name").value;
  const regPassword = document.querySelector(".registration__password").value;
  const regEmail = document.querySelector(".registration__email").value;
  const clientObj = { name: regName, password: regPassword, email: regEmail };

  // 统一使用同一个键名(这里用'Users',你也可以换成'Користувачі',只要前后一致就行)
  let clientsArr = JSON.parse(localStorage.getItem('Users'));
  
  // 如果localStorage里没有数据,先初始化一个空数组
  if (!clientsArr) {
    clientsArr = [];
  }
  
  // 往数组中添加新用户对象
  clientsArr.push(clientObj);
  // 将更新后的数组重新存入localStorage
  localStorage.setItem('Users', JSON.stringify(clientsArr));
})

关键修改说明

  1. 统一键名:读取和存储都使用同一个键,确保能正确获取到已有的用户数据。
  2. 统一存储格式:无论是否是第一个用户,始终存储数组类型的数据。第一次没有数据时先初始化空数组,这样后续调用push方法就不会出错。
  3. 变量规范:将不需要重新赋值的变量改用const声明,代码更严谨。

这样修改后,你的逻辑就完全可行了——每次提交表单时,要么取出已有的用户数组,要么初始化空数组,添加新用户后再存回localStorage,完美实现你想要的累加用户的需求。

内容的提问来源于stack exchange,提问作者Артем Мирошниченко

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:42:37