Javascript数组显示

Javascript数组显示,javascript,arrays,Javascript,Arrays,我是JavaScript新手,决定创建自己的JS测试 以下是我目前掌握的情况: <script type="text/javascript"> score = 0; var questions = [['whats 2 + 2' , '4'] , ['whats 3 * 3' , 9] , ['whats 2 * 7' , 14] ]; function askQ(ans){ var answer =prompt (questions[i]

我是JavaScript新手,决定创建自己的JS测试

以下是我目前掌握的情况:

<script type="text/javascript">
    score = 0;
    var questions = [['whats 2 + 2' , '4'] , ['whats 3 * 3' , 9] , ['whats 2 * 7' , 14] ];

    function askQ(ans){
        var answer =prompt (questions[i] , '');
        if(answer == questions[1]){
            score++;
            alert('Yahooo , ur right');
        } else{
            alert('Brush up ur GK');
        }
    }

    for (var i = 0; i < questions.length ; i++) {
        askQ(questions[i]);
    };
    </script>

得分=0;
变量问题=['whats 2+2','4'],['whats 3*3',9],'whats 2*7',14];
函数askQ(ans){
var回答=提示(问题[i],'';
如果(答案==问题[1]){
分数++;
警惕(“你的右边是Yahooo”);
}否则{
警惕(“刷上你的GK”);
}
}
对于(var i=0;i
问题是当问题“提示”到用户屏幕时,答案也同时显示,例如。对于第一个问题,如下所示:

“什么是2+2,4”。。现在你看,“4”是答案

我确信为了不让4显示出来,我需要做一些不同的事情,所以我在网上浏览了一些代码片段,这些代码要么太复杂,让我无法理解


这里有一个。

注意,您正在将
ans
传递到函数中(该函数方便地包含问答对),但实际上您并没有在任何地方使用它

该行:

var answer =prompt (questions[i] , '');
应该是:

var answer = prompt(ans[0], ''); // Display the question
if(answer == ans[1]) { // Compare answer to correct answer
这句话:

if(answer == questions[1]){
应该是:

var answer = prompt(ans[0], ''); // Display the question
if(answer == ans[1]) { // Compare answer to correct answer
此外,最好将所有答案存储为字符串而不是数字,因为您要将它们与用户输入的字符串进行比较<代码>['whats 3*3',9]
应该是
['whats 3*3',9']

更好的设计还可以是使用JavaScript对象文本来存储问答对。比如:

var questions = [
  {Question: 'whats 2 + 2', Answer: '4'},
  {Question: 'whats 3 * 3', Answer: '9'},
  {Question: 'whats 2 * 7', Answer: '14'}
];
然后,您可以将代码更改为:

var answer = prompt(ans.Question, ''); // Display the question
以及:

这更容易阅读。

应该是:

<script type="text/javascript">
  score = 0;
var questions = [['whats 2 + 2' , '4'] , ['whats 3 * 3' , 9] , ['whats 2 * 7' , 14] ];

function askQ(ans){
    var answer =prompt (ans[0] , '');
    if(answer == ans[1]){
        score++;
        alert('Yahooo , ur right');
    } else{
        alert('Brush up ur GK');
    }
}

for (var i = 0; i < questions.length ; i++) {
    askQ(questions[i]);
};
</script>
是的

因为您必须实际使用传递的参数ans及其第一个值

而不是

var answer =prompt (questions[0] , '');
if(answer == questions[1]){
是的


出于与上述相同的原因,但有第二个值。

问题[i]
是一个由两个元素组成的数组。您想在提示符中显示
问题[i][0]
,并将答案与
问题[i][1]
进行比较。这与OP的代码有什么不同?“教一个人钓鱼…”这是一个非常聪明的方法,迈克,我是说你回答的最后一部分,你做“var-answer=prompt(ans.Question)”;,顺便说一句,是的,到目前为止,即使你把问题“what is 2+2”回答为4,它也会把它标记为错误,因为从提示中接受的值是一个“字符串”虽然数组中的是一个“Int”(不确定!但我认为这是对的),但你建议Mike将数组中的“Int”转换为字符串,但我实际上希望的是,一旦用户在提示符中输入答案,我会将其转换为Int。你可以使用。如果用户输入的数字无效,您可能需要执行某种类型的错误检查代码。该代码现在可以正常工作,但尚未执行您关于检查用户是否输入了数字以外的内容的建议。它不使用parseInt就可以工作。小提琴在这儿
if(answer == ans[1]){