检查 userinput 值是否已经存在于 localStorage JSON 对象中?

Check if userinput value exists in localStorage JSON Object already?

我正在为我的网站制作一个登录系统。设法使用 localStorage 进行注册和登录工作(因此它将细节存储在每个帐户的数组中)

但是,我希望它在输入错误的用户名或不存在的用户名时显示错误 [因此不在 localStorage 中]。

我设法为密码做了这个,一旦输入的用户名正确,这里是密码检查代码:

else if (passwordLogin !== parse.password) {
    message.innerHTML = "Incorrect account information!";
    return;
}

^ 其中 passwordLogin 是他们在密码字段中输入的内容,parse 是一个为用户名解析 localstorage 的函数,因此:JSON.parse(localStorage[usernameLogin] - usernameLogin 是他们在用户名字段中输入的内容

现在我正在尝试对用户名做同样的事情。这是我迄今为止最好的代码:

if (localStorage[usernameLogin] === undefined) {
    message.innerHTML = "No such ninja username exists!"; 
} 

所以 usernameLogin 就是他们在用户名字段中输入的内容。 我正在检查他们在 localStorage 中的输入,并检查它是否是 undefined。在 localStorage 中,每个帐户的 key 是它的用户名,value 是一个包含所有详细信息的数组,例如:{"username":"Jordan","password":"asd"}[这里的关键是普通的乔丹]

如您所见,此用户名和通过检查位于 if 和 else if 循环中。 if(用户名检查)不执行任何操作,但密码检查代码在 else if 中有效(仅在输入的用户名存在且密码不匹配时有效)

也许

=== undefined

不正确。任何想法表示赞赏:)

尝试

if (!localStorage.getItem(usernameLogin)) {
    message.innerHTML = "No such ninja username exists!";    
}

if (localStorage[usernameLogin] === undefined) {
    message.innerHTML = "No such ninja username exists!";    
}

确保 usernameLogin 变量包含一个字符串。

检查 undefinedempty condtions 就足够了。

localStorage.hasOwnProperty('usernameLogin') &&
typeof localStorage.usernameLogin !== 'undefined' &&
localStorage.usernameLogin !== ''

您可以添加条件,在解析值后检查其中的值。

typeof JSON.parse(localStorage.usernameLogin) === 'object' &&
typeof JSON.parse(localStorage.usernameLogin).password === 'string'
JSON.parse(localStorage.usernameLogin).password === 'yourpassword'