2013-03-21 5 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 только один подскажите, как пользователь вводит 3 имени? –

+0

Что вы пробовали? Вы хоть представляете, что делать со струной? Советы: ['split'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split), [' sort'] (https://developer.mozilla.org/ru-US/docs/JavaScript/Reference/Global_Objects/Array/sort) и ['join'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/join) функции – Bergi

ответ

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

+0

Нажато случайно xD это в основном, как я рекомендовал бы это сделать. хотя вы можете просто выполнить '.sort()' без функции. –

+0

Я бы не предложил позволить им делать все три имени сразу. Исключительно для того, чтобы они могли вводить «jeff, tim, tyler» или «jeff tim tyler» или jeff, tim, tyler' или любые другие случайные случаи, и вам пришлось бы учитывать их все, чтобы они работали. Вы можете сделать '.split (/ \ s |, |, \ s)', но даже это, вероятно, не будет охватывать все случаи краев. И это также не позволило бы назвать полные имена, такие как «jeff shaver», поскольку у него есть пробел. –

Смежные вопросы