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

如何在登录函数中访问用户名密码列表内的任意元素

问题解决说明

首先原代码存在两处核心问题:

  1. 调用signIn函数时传入的参数名错误:提前获取输入的变量是usernamePrompt、passwordPrompt,调用时错写为namePrompt、realNamePrompt,会导致参数传递失败。
  2. 校验逻辑固定写死了数组下标0,只能匹配第一个用户的信息。

实现任意用户校验的修改方案

你可以通过遍历数组的所有元素完成逐个校验,常用两种写法:

写法1:基础for循环实现(兼容性最优)

var database = [
    {
        username: "captain",
        password: "america"
    },
    {
        username: "bruce",
        password: "banner"
    },
    {
        username: "tony",
        password: "stark"
    }
]

var usernamePrompt = prompt("Enter your name: ");
var passwordPrompt = prompt("Enter your password: ");

function signIn(user, pass) {
    let isValid = false;
    let loginUser = null;
    // 遍历整个database数组的所有元素
    for (let i = 0; i < database.length; i++) {
        if (user === database[i].username && pass === database[i].password) {
            isValid = true;
            loginUser = database[i];
            // 匹配到就跳出循环,不需要继续遍历
            break;
        }
    }
    if (isValid) {
        alert("Welcome " + loginUser.username)
    } else {
        alert("Wrong username or password!")
    }
}

// 修正参数名
signIn(usernamePrompt, passwordPrompt)

写法2:Array.find方法实现(写法更简洁)

function signIn(user, pass) {
    // 查找数组中符合账号密码匹配规则的用户对象
    const targetUser = database.find(item => item.username === user && item.password === pass);
    if (targetUser) {
        alert("Welcome " + targetUser.username)
    } else {
        alert("Wrong username or password!")
    }
}

关于访问列表任意元素的补充说明

JavaScript数组的下标从0开始计数,如果你需要直接调用指定位置的元素,直接使用数组[下标]语法即可:

  • 访问第一个元素:database[0]
  • 访问第二个元素:database[1]
  • 访问最后一个元素:database[database.length - 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:06:04