陷入一个不那么无限循环?

3

我对JavaScript非常陌生,所以请不要因为我的“无知”问题而攻击我。

在我的当前代码中,我被困在一个看似无限循环(但不完全是无限的),最终在通过所有提示几次后结束。

var authors = [];
                for(var authorName = 0; authorName < books.length; authorName++)
            {
                authors[0]=parseFloat(prompt("Who wrote War and Peace?"));
                authors[1]=parseFloat(prompt("Who wrote Huckleberry Finn?"));
                authors[2]=parseFloat(prompt("Who wrote The Return of the Native?"));
                authors[3]=parseFloat(prompt("Who wrote A Christmas Carol?"));
                authors[4]=parseFloat(prompt("Who wrote Exodus?"));

        }

我不确定是我没有正确设置数组还是for循环,或者我需要做什么来使其遍历并填充数组。

请记住,我对JavaScript非常新手,最基本、初学者、简单的答案会是最好的。我现在只是试图建立起对基础的牢固掌握。(:


4
你有一个for循环来迭代所有的“书籍”。对于每本书,循环会提出5个问题。 - Pointy
1
另外,当你的问题似乎是在询问名称而不是数字时,为什么要在调用prompt()的结果上使用parseFloat() - Pointy
1
你在问题中没有包含一个问题。 - zzzzBov
不是解决你的问题,但是你的命名规则有点奇怪。你有一个变量 authorName,它似乎是一个整数。为什么一个整数会被称为 authorName - jdmdevdotnet
@jdmdevdotnet,我是JavaScript的极度初学者,所以我只是给事物命名,以便提醒自己正在使用它们来做什么。在这种情况下,我提醒自己我正在尝试对该数组中的authorName进行排序。如果你个人而言,你会给它起什么名字呢?只是出于好奇。 - Amber
显示剩余2条评论
2个回答

1
我认为您正在寻找这个:

var bookNames = [
    "War and Peace?",
    "Huckleberry Finn?",
    "The Return of the Native?",
    "A Christmas Carol?",
    "Exodus?"
];

for(var authorName = 0; authorName < books.length; authorName++)
{
   authors[authorName]=parseFloat(prompt("Who wrote " + bookNames[authorName] + "?"));
}

这将只触发5次,是更好的完成你尝试做的事情的方法。另外,我建议将authorName的名称更改为更能描述其含义的内容。

是的!这就是我想做的,尽管我无法在脑海中理解它。为什么我会决定主修计算机编程,当我在逻辑方面如此困难,这超出了我的理解。英语更好,但对计算机无限着迷的诅咒!我现在唯一遇到的问题是,当我打开文件时,它根本没有运行。就像没有提示出现一样。但逻辑非常清晰,这正是我一直在努力解决的问题。 - Amber

0

for 块中的每一行代码都会按照指定的次数运行,这里是 books.length 次。每次循环时,循环计数器(在本例中为 authorName)都可以作为一个变量使用,并具有其当前值,这里将在 5 次迭代中取值从 0 到 4。

for(var authorName = 0; authorName < books.length; authorName++)
{
  authors[authorName] = prompt("Who wrote " + books[authorName] + "?");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接