2013-03-21 27 views
0

對於類項目,我需要在Javascript中創建一個程序,要求用戶輸入3個名稱,然後按字母順序排列名稱並將其打印在屏幕上。提示用戶輸入信息,然後對數據進行排序

我已經想出瞭如何創建一個提示框供用戶輸入數據,我可以讓程序打印出用戶輸入到屏幕上的字符串。但是,我無法弄清楚如何讓Javascript排序字符串。我知道我需要使用一個數組,但我不確定在哪裏放置數組,或者如何讓它知道用戶輸入的變量。

這是我的代碼至今:

<html> 
<script> 

function disp_prompt() 
     { 
     var names=prompt("Please enter three names","Names") 
     document.getElementById("msg").innerHTML= names 
     } 

</script> 


<center><input type="button" onclick="disp_prompt()" value="Click Here"></center> 
<br> 

<h2><center><div id="msg"></div></center></h2> 
</html> 
+0

Theres only one prompt prompt how the user enter 3 names? – 2013-03-21 17:52:38

+0

你有什麼嘗試?你有什麼想法如何處理字符串?提示:['split'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split),['sort'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort)和['join'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/join )功能 – Bergi 2013-03-21 17:53:47

回答

4

整個事情可能看起來像

var namesToPrompt = 3, 
    names   = [ ]; 

// as long as namesToPrompt is truthy, prompt for inputs 
while(namesToPrompt--) { 
    names.push(prompt('Please enter a name')); 
} 

// sort our array 
names.sort(byName); 

// and print it 
document.getElementById('msg').textContent = names.join(','); 

function byName(a, b) { 
    return a.localeCompare(b); 
} 

如果你想要讓用戶在輸入一次所有的名字,你可以去喜歡

var inputNames = prompt('Please enter three names','Names'); 

document.getElementById('msg').textContent = inputNames 
               .split(/,\s+/) // split by any amount of white-space characters in a row 
               .sort(byName) 
               .join(','); 

function byName(a, b) { 
    return a.localeCompare(b); 
} 
+0

什麼是downvote? – jAndy 2013-03-21 17:58:32

+0

點擊意外xD這基本上是我如何建議做到這一點。雖然,你可以不使用函數來執行'.sort()'。 – 2013-03-21 18:00:52

+0

我不會建議讓他們一次完成所有三個名字。僅僅因爲他們可以輸入'jeff,tim,tyler'或'jeff tim tyler'或者jeff,tim,tyler'或者任何其他隨機的情況,你將不得不考慮它們的全部工作。你可以做'.split(/ \ s |,|,\ s)',但即使這可能不會涵蓋所有的邊界情況。而且這也不允許全名,比如'jeff shaver'因爲它有空間。 – 2013-03-21 18:05:14

相關問題