2017-04-12 138 views
0

我有这个问题,我一直在努力了几个小时,没有运气。我应该编写JavaScript代码,提示用户输入3个名称(一次一个)。该程序应按升序排列并显示不同行上的名称。排序用户输入并打印它

我可以让程序提示用户输入名称,但难以对它们进行排序并正确显示它们。

<html> 
<head> 
    <title>Day 3 - Example 1</title> 
</head 
<body> 
<center> 
<script language="javascript"> 

    var na1,na2,na3; 
    na1=prompt("Enter your first name:",""); 
    na2=prompt("Enter your second name:",""); 
    na3=prompt("Enter your third name",""); 
    var na1_na2 = compare(na1, na2); 
    var na1_na3 = compare(na1, na3); 
    var na2_na3 = compare(na2, na3); 
    var first, second, third; 

    if (na1_na2 === -1) { 

     if (na1_na3 === -1) { 

      first = na1; 


      if (na2_na3 === -1) { 

       second = na2; 
       third = na3; 
      } else { 

       second = na3; 
       third = na2; 
      } 
     } else { 

      first = na3 
      second = na1; 
      third = na2; 
     } 
    } else { 

    } 
    function compare(name1, name2) { 
     name1 = name1.toLowerCase(); 
     name2 = name2.toLowerCase(); 

     if (name1 === name2) return 0; 

     var lengthOfShorterName = Math.min(name1.length, name2.length) 

     for (var i = 0; i < lengthOfShorterName; i++) { 
      if (name1.charAt(i) > name2.charAt(i)) return 1; 
      if (name1.charAt(i) < name2.charAt(i)) return -1; 
     } 

     if (name1.lenght < name2.length) return -1; 
     return 1; 
    } 

</script> 
</center> 
</body> 
</html> 
+1

1)你有一个错字:'name1.lenght'应该是'name1.length' 2)你怎么想显示他们呢?您可以使用'alert','console.log'或将它们插入到DOM中。 –

+1

你还需要明确地看看使用Array.sort,除非你已经被指示不要:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort – Triptych

回答

2

只需将名称放入数组中,并使用Array.sort来排序。

// Create a new, empty array 
 
var names = []; 
 

 
// Prompt for the names and put each into the array: 
 
names.push(prompt("Enter your first name:","")); 
 
names.push(prompt("Enter your middle name:","")); 
 
names.push(prompt("Enter your last name:","")); 
 

 
// Sort the names: 
 
names.sort(); 
 

 
// Print the results: 
 
names.forEach(function(value){ 
 
    console.log(value); 
 
});

+0

我只写同样的例子:) –