Javascript数组 - 输出用户输入回输?

时间:2016-11-21 16:29:37

标签: javascript arrays prompt

您好我正在大学学习 JavaScript ,这只是我的第一年,我们被要求做以下问题......

生日:邀请用户输入12个生日,每月一个。这些被写入一个数组。然后,用户应该能够指示一个月并将该月的生日返回给他们...例如如果他们表示1月16日 - Aidan将作为他的名字返回并且1月份进入生日。

我们必须提示用户输入一年中每个月的朋友姓名和生日。然后他们可以输入一个月,它将输出那个月的朋友生日。

我们数组来执行此问题。我已经能够使用一个非常长的if / else语句来做它,但我不知道从一个数组开始。

非常感谢任何帮助。

如果我有声明,我没有数组代码:

function displayDetails() {
  var jan = prompt("Enter a name and date for January");
  var feb = prompt("Enter a name and date for February");
  if (month = "january") {
    alert(jan);
  } else if (month = "february") {
    alert("" + feb);
  }
  // ETC.
}

我开始声明阵列并进入月份。

var months = new Array ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct"‌​,"Nov","Dec"];

1 个答案:

答案 0 :(得分:1)

注意:考虑这个答案热烈欢迎堆栈溢出。下一次,如果你想最大化你的答案机会,请展示一些研究工作。我写出了问题的完整/最佳答案,您必须仔细阅读答案并将信息合并到您自己的程序中。

将问题切成小块并找出解决这些问题的方法。你已经解决了几个子问题。

  

生日:邀请用户输入12个生日每月一个。这些写入数组。然后,用户应该能够指示一个月并将该月的生日返回给他们...例如如果他们表示1月, 16日 - Aidan将被退回,因为他的名字和生日是在1月份输入的。

1。 “输入...生日”

你已经写过这一行了,所以你知道如何让某人“过生日”。

var jan = prompt("Enter a name and date for January");

2。 “每个月一个”

您还尝试创建包含所有月份的数组。如果你检查浏览器的javascript控制台,你会发现这导致了一个错误:

// Uncaught SyntaxError: Invalid or unexpected token
var months = new Array ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct"‌​,"Nov","Dec"];

这是因为你混合了两种创建数组的方法:

var months = ["Jan", "Feb"];         // Using brackets
var months = new Array("Jan", "Feb") // Using new

成功定义数组后,您可以通过编写以下内容来检索值:

var theFirstMonth = months[0];       // Sets theFirstMonth to "Jan"

现在,您需要知道如何自动“循环”或“迭代”其值。例如,使用for循环。

for (var i = 0;            // Start with a variable `i`, that contains `0`
     i < months.length;    // As long as `i` is smaller then the nr. of months
     i = i + 1) {          // Execute the block below and increase `i` by 1 in the end
  console.log(months[i]);  // Retreive the value from the array using `i`
}

您将在控制台中看到12张照片,打印每个月的名字。

3。 “写入数组”

您也可以写入数组,而不是从数组中检索值。这与任何其他变量一样,使用=

var myArray = ["X", "B", "C"];
myArray[0] = "A"; // myArray is now ["A", "B", "C"]

您还可以使用push

将项添加到数组的 end
var myArray = ["A", "B", "C"];
myArray.push("D"); // myArray is now ["A", "B", "C", "D"]

将两者结合起来应该是这样的:(我会让你填写空白的部分)

var months = ["January", "February"];
var birthdays = [];

for (var i = 0; i < months.length; i = i + 1) {
  // Retreive the name of the month, create the question "Enter for ..."
  // ...

  // Ask the user for a date and name, store it in a variable
  // ...

  // push the input to the birthdays array
  // ...
}

4。 “表示一个月,......返回”

您知道如何获取用户输入,并且您知道如何从数组中检索值。你只需要做一件事:找到数组中值的索引。拿这个数组:

var months = ["January", "February", "March"];

“January”的索引是0,因为它位于第一个位置。 “二月”的索引是1。等等。

现在,知道如何遍历所有值,你能想到找到特定值索引的方法吗?

var valueToSearch = "March";
var months = ["January", "February", "March"];
var valueIndex = -1;

for (var i = 0; i < months.length; i = i + 1) {
  if (months[i] === valueToSearch) {
    valueIndex = i;
  }
}

把这些东西放在一起:

输入:

  • 创建包含所有月份的数组
  • 为生日创建一个空数组
  • 每个月循环并询问用户输入
  • 将用户输入推送到您的生日数组

输出:

  • 询问用户一个月的名字
  • 在您的月份数组中查找本月的索引
  • 在您找到的索引处提醒生日数组中的生日输入