JSON和JS重复检查索引号(PURE JAVASCRIPT)

Posted

技术标签:

【中文标题】JSON和JS重复检查索引号(PURE JAVASCRIPT)【英文标题】:JSON and JS repeat check index number (PURE JAVASCRIPT) 【发布时间】:2022-01-09 07:24:15 【问题描述】:

我正在通过 JSON 创建一个登录站点,我想检查用户名是否与密码匹配(通过使用数组索引来匹配用户名、密码和电子邮件)但我不知道如何查看用户名与任何索引号匹配,并且如果数组中有与密码部分中的索引对应的索引。我可以将 indexOf 与递归(调用自身的函数)一起使用,但我必须将检查的索引增加 1,我不知道该怎么做。 (搜索了任何东西,但我找不到任何东西) 像这样:


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

function checkDetails(username, password) 
let message = document.getElementById("placeholder");
let password = document.getElementById("placeholder1");
let username = document.getElementById("placeholder2");

//part I am struggling with
let usernames = json.parse("usernames");
let passwords = json.parse("passwords");
message.innerhtml = (username === usernames[/*i want this to increment to check*/]) ? 
message.innerHTML = (password === indexOf(/*I want this to be the index of the one 
index that IS true to the conditional above*/)) ? m
essage.innerHTML = "Success with logging in" :
 message.innerHTML = "Invalid username or password";

【问题讨论】:

您在 checkDetails 示例中缺少右括号,并且在变量名 (message) 中间有一个换行符... 我认为这是一个玩具项目,因为这种身份验证方法完全不安全。这里不需要递归。 json.parse 不是函数,应该是 JSON.parse。您在寻找indexOf,例如usernames.indexOf(username) >= 0? 忽略您的代码的其他问题,看起来您想在这里使用长且不可读的三元表达式,无论出于何种原因,您都在寻找合适的测试。这只是data.usernames.indexOf(username) == data.passwords.indexOf(password)(尽管您还必须检查它们中的任何一个是否> -1) 由于用户名和密码存储在数组中,并且每个人的密码和用户名都在同一个索引中,我希望它检查数组中每个用户名的文本,然后找到索引正确的数字并检查密码是否相同(使用您的示例,我无法检查 indexof 的文本以查看它是否正确并将其放入输入中。 【参考方案1】:

正如 cmets 所证明的,您的 JSON 格式不正确,这是一种完全不安全的登录管理方式。也就是说,您可以通过以下方式测试用户名,如果存在,请检查是否有适当的密码签出。在函数的第一行,我们将用户名规范化为小写,并删除任何多余的空格。

let json = 
  "usernames": [
    "Supa", "Marwan", "Jason", "Jacob",
  ],
  "passwords": [
    "placeholder", "placeholder1", "placeholder2", "placeholder3",
  ]


function checkDetails(username, password) 
  let userindex = json.usernames.findIndex(u => u.toLowerCase().trim() === username.toLowerCase().trim());
  if (userindex === -1) 
    return 'username does not exist';
   else if (json.passwords[userindex] !== password) 
    return 'wrong password';
  
  return 'success!'


console.log(checkDetails('Supa1', 'placeholder1'))
console.log(checkDetails('Supa', 'placeholder1'))
console.log(checkDetails('Supa', 'placeholder'))

【讨论】:

以上是关于JSON和JS重复检查索引号(PURE JAVASCRIPT)的主要内容,如果未能解决你的问题,请参考以下文章

带有单元格引用的 TO_PURE_TEXT 不会根据文档过滤双引号

如何正确检查对象是不是被字符串化? JS [重复]

js 解析 JSON 数据

Python json单引号和双引号的区别[重复]

如何在rails中编写JSON API的测试用例[重复]

Ruby on Rails,json vs js ajax 响应