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

纯JavaScript实现JSON存储的用户名与对应索引密码匹配校验问题

实现方案

你要的索引匹配校验不需要用递归,直接通过indexOf获取用户名对应索引即可,indexOf方法会自动遍历整个数组,返回第一个匹配元素的索引,不需要你手动写自增逻辑,实现步骤如下:

  • 首先解析完整的JSON配置对象,不要单独解析usernames/passwords字符串
  • 调用usernames.indexOf(输入用户名)获取匹配的索引值,如果返回-1说明用户名不存在
  • 若索引有效,直接用该索引读取passwords数组的对应值,和输入的密码比对即可完成校验

修正后的完整代码

首先修正你原来的JSON语法错误(缺少逗号、多余尾部逗号):

{
  "usernames": [
    "Supa", "Marwan", "Jason", "Jacob"
  ],
  "passwords": [
    "placeholder", "placeholder1", "placeholder2", "placeholder3"
  ]
}

修正后的JS逻辑:

// 先把完整的JSON字符串解析为JS对象
const userData = JSON.parse('填写你的完整JSON字符串');
const usernames = userData.usernames;
const passwords = userData.passwords;

function checkDetails() {
  const messageDom = document.getElementById("placeholder");
  // 读取输入框的实际输入内容
  const inputPassword = document.getElementById("placeholder1").value;
  const inputUsername = document.getElementById("placeholder2").value;

  // 自动获取匹配用户名的索引
  const matchIndex = usernames.indexOf(inputUsername);
  // 先校验用户名是否存在,再校验对应索引的密码是否匹配
  if (matchIndex !== -1 && passwords[matchIndex] === inputPassword) {
    messageDom.innerHTML = "登录成功";
  } else {
    messageDom.innerHTML = "用户名或密码无效";
  }
}

注意事项

  • 上述方案仅适用于前端演示场景,真实生产环境绝对不能把明文密码存在前端JSON中,所有登录校验逻辑必须放在服务端实现,避免数据泄露和前端篡改风险
  • 原代码存在的变量重复声明、JSON解析方式错误、三目运算符嵌套逻辑错误问题,上述代码已经全部修正

内容的提问来源于stack exchange,提问作者supasiblings

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:36:02