簡體   English   中英

將名稱添加到數組並隨機選擇一個名稱(JavaScript)

[英]Adding names to an array and picking one out at random (Javascript)

堅持這項運動。

創建一個程序,為比賽或抽獎選擇獲獎者。 提示輸入參賽者的姓名,直到用戶將條目留空。 然后隨機選擇一個獲勝者。

示例輸出

輸入名稱:Homer
輸入名稱:Bart
輸入名稱:Maggie
輸入名稱:Lisa
輸入名稱:Moe
輸入名稱:
獲勝者是... Maggie。

約束條件

•使用循環將用戶輸入捕獲到陣列中。
•使用隨機數生成器從數組中抽取一個值。
•不要在數組中包含空白條目。
•一些語言要求您提前定義數組的長度。 您可能需要找到另一個數據結構,例如ArrayList。

**編程新手

到目前為止,這是我所做的:

 var name; var users = []; var winner = Math.floor(Math.random() * users.length + 1); while (true) { users.push(name = prompt("Enter a name:")); if (name === "") { break; } }; document.write(users + "<br>" + winner); 

但是獲勝者變量只顯示1嗎?

使用while循環

我不會給您合適的代碼,因為這會破壞練習,但這是個主意:

setup array
  while (true)
  wait for input
  if input blank
      break out of loop
  else
      add entry to array
  end-while
  choose a winner
  end

在使用名稱填充數組之前,您無法獲得隨機索引。 首先,您使用while循環收集名稱,然后獲取隨機索引。

移動這條線:

var winner = Math.floor(Math.random() * users.length);

在while循環之后。

您已找到索引,但忘記了從具有相關索引的數組中選擇值。 嘗試添加:

document.write(users + "<br>" + users[winner]);

您實際上快到了。

原始帖子的第一件事是,您在添加名稱之前選擇了用戶。 選擇必須在輸入之后進行。

第二個問題是您將+ 1添加到隨機nr生成器。 這不是必需的,因為javascript數組基於0,所以對於4個條目的長度,索引從0到3。

最后,您所缺少的是顯示實際用戶而不是數字,因為您可以訪問users數組並顯示users[winner]選擇的索引,就像users[winner]

如果您想更確定一點,則可以添加,如果未添加任何用戶,則不會有贏家;)(通過檢查users.length屬性)

 var name; var users = []; while (true) { users.push(name = prompt("Enter a name:")); if (name === "") { break; } }; // the winner can only be decided here (and + 1 is not necessary as Javascript has a 0 based index in arrays) var winner = Math.floor(Math.random() * users.length); // add the user array so you can get the index // the join will make sure that your users are shown below eachother alert(users.join('\\n') + "\\n" + users[winner] + ' won'); 

知道了,謝謝大家。

 var name; var users = []; while (true) { users.push(name = prompt("Enter a name:")); if (name === "") { break; } }; var numUsers = users.length - 1; var winner = Math.floor(Math.random() * numUsers + 1); document.write("The winner is..." + users[winner]); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM