如何使用.includes()方法验证arrayName.push()添加到registeredUsers数组的值
问题解决:用
.includes()校验数组新增元素的重复性 你的核心需求是拦截重复用户,用.includes()验证要添加的用户是否已存在,但原代码里犯了一个关键错误——数组的push()方法返回的是数组的新长度,不是你添加的那个元素值,所以你用registerNew(也就是数组长度)去调用.includes(),永远不会匹配到数组里的用户名,逻辑完全走反了。
正确的实现思路
正确的流程应该是先检查,后添加,而不是先添加再校验:
- 先把要注册的用户名存成单独变量
- 用
.includes()检查这个用户名是否已经在registeredUsers数组中 - 如果存在:直接提示重复,不执行添加操作
- 如果不存在:把用户名push进数组,提示欢迎
修正后的代码
let registeredUsers = ['Power Ranger 1', 'Power Ranger 2', 'Power Ranger 3']; function register() { // 定义要注册的新用户(实际场景可替换为表单输入等动态值) const newUsername = "Power Ranger 1"; // 先检查用户是否已存在 const isUserExist = registeredUsers.includes(newUsername); if (isUserExist) { alert("Username already exists!"); } else { // 不存在才执行添加操作 registeredUsers.push(newUsername); alert("Welcome New User"); } console.log(registeredUsers); } register();
原代码的其他问题说明
- 你之前先push再用
pop()回滚的方式虽然能实现功能,但多了不必要的数组操作,不如先检查再添加高效 registeredUsers.length - 1获取最后一个元素的操作在正确流程里不需要,因为我们已经提前持有了要添加的用户名变量
内容的提问来源于stack exchange,提问作者dakupz
相关产品推荐
相关产品推荐

