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

JS中两个数组元素比较失效问题求助

问题排查:JS比较逻辑失效的原因及修复方案

嘿,我一眼就揪出问题所在啦——类型不匹配导致你的严格相等判断完全失效了!

问题根源

你代码里的prompt()方法返回的是字符串类型的用户输入,而questions数组里存储的答案是数字类型(比如1、2、3)。JS里的===是严格相等运算符,它会同时检查值和类型是否完全一致,字符串和数字哪怕值看起来一样,类型不同也会判定为不相等,这就是为什么你的比较逻辑永远走else分支的原因。

两种修复方案

方案1:把用户输入转为数字类型

修改answers.push那一行,用Number()或者parseInt()把字符串输入转成数字:

var questions = [ ['how many states?', 1], ['how many continents?', 2], ['how many legs?', 3] ]
var answers = [];
var rightAnswers = [];
var wrongAnswers = [];
for(i = 0; i<questions.length; i+=1){
 // 将用户输入转为数字,toLowerCase()对数字无影响,可留可删
 var userInput = prompt(questions[i][0]).toLowerCase();
 answers.push(Number(userInput));
 if(questions[i][1] === answers[i]){
 rightAnswers.push(questions[i][0]); // 建议取消注释,这样就能收集正确的问题啦
 console.log("success!");
 }else{
 console.log("bummer");
 }
}

方案2:把问题数组里的答案改为字符串类型

如果你不想转换输入类型,也可以直接修改questions数组,把答案改成字符串:

// 把数字答案改成字符串形式
var questions = [ ['how many states?', '1'], ['how many continents?', '2'], ['how many legs?', '3'] ]
var answers = [];
var rightAnswers = [];
var wrongAnswers = [];
for(i = 0; i<questions.length; i+=1){
 answers.push(prompt(questions[i][0]).toLowerCase());
 if(questions[i][1] === answers[i]){
 rightAnswers.push(questions[i][0]);
 console.log("success!");
 }else{
 console.log("bummer");
 }
}

额外优化建议

如果用户输入了非数字内容(比如字母、符号),转成数字会得到NaN,这时候可以加个输入有效性判断,还能让用户重新输入当前问题:

var questions = [ ['how many states?', 1], ['how many continents?', 2], ['how many legs?', 3] ]
var answers = [];
var rightAnswers = [];
var wrongAnswers = [];
for(i = 0; i<questions.length; i+=1){
 var userInput = prompt(questions[i][0]).toLowerCase();
 var numInput = Number(userInput);
 // 先判断输入是否为有效数字
 if (!isNaN(numInput)) {
 answers.push(numInput);
 if(questions[i][1] === numInput){
 rightAnswers.push(questions[i][0]);
 console.log("success!");
 }else{
 console.log("bummer");
 }
 } else {
 console.log("请输入有效的数字哦!");
 // 让循环停在当前问题,重新提问
 i--;
 }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:29:37