我的.sort()只是从输入框中对添加的值进行排序?为什么是这样

时间:2015-12-12 20:04:31

标签: javascript html arrays sorting

所以我创建了一个输入框来为数组添加一个值,但是当它对数组进行排序时,它只对输入框中的值进行排序,而不是对整个数组进行排序。我搞砸了但似乎没什么用。

<script>

var Arrays = ["Printer", "Tablet", "Router", "Smart phone", "Motherboard",     "Hard drive"];
document.getElementById("beef").innerHTML = Arrays;


function displayMessage() {
var userInput = document.hey.firstname.value; 
document.getElementById("pie").innerHTML = "The user entered: " + userInput +  "<br>";

Arrays.push(userInput);

document.getElementById("pie").innerHTML = Arrays;
} 

function count() {
document.getElementById("counting").innerHTML =
Arrays.length;
}

function sort() { 
document.getElementById("pie").innerHTML = Arrays;
Arrays.sort();
}   





</script>
<body>

JavaScript数组

<br>
<form name="hey">
Enter value:
<br>
<input type="" name="firstname" value="">
<br>
<button type="button" onclick="displayMessage()">Add to list</button>
</form>

<p id="pie"></p>

<br>

<p id="beef"></p>

<br>

<button type="button" onclick="count();sort();">Click to count and sort</button>

<br>

<p id="counting"></p>
<br>
<p id="sorting"></p>
<br>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

我真的没有得到什么,但是,我发现了一个问题,并在下面列出。

您需要更新sort功能,以便先排序,然后在html中设置值。

function sort() { 
   Arrays.sort(); // need to sort first
   document.getElementById("pie").innerHTML = Arrays;
}   

答案 1 :(得分:1)

这里有多个问题。首先,正如其他评论所说,您需要在编写结果之前进行排序。第二件事是,您可能输入小写字母作为用户输入,但javascript数组排序区分大小写,以大写字母开头的单词在小字母单词之前排序。如果您愿意忽略套管,则需要向sort函数添加自定义功能。您可以尝试使用以下命令替换sort函数:

function sort() {
    Arrays.sort(function(a, b) {

        if (a.toLowerCase() < b.toLowerCase())
            return -1;

        if (a.toLowerCase() > b.toLowerCase())
            return 1;

        return 0;
    });

    document.getElementById('beef').innerHTML = Arrays;
}

在旁注中,您正在覆盖The user entered..方法中的displayMessage句子。您可能希望在pie更改beef。 可以在sort方法中应用相同的内容。最后,代码应如下所示:

var Arrays = ['Printer', 'Tablet', 'Router', 'Smart phone', 'Motherboard', 'Hard drive'];
document.getElementById("beef").innerHTML = Arrays;

function displayMessage() {
    var userInput = document.hey.firstname.value;
    document.getElementById('pie').innerHTML = "The user entered: " + userInput +  "<br>";
    Arrays.push(userInput);
    document.getElementById('beef').innerHTML = Arrays;
} 

function count() {
    document.getElementById('counting').innerHTML = Arrays.length;
}

function sort() {
    Arrays.sort(function(a, b) {
        if (a.toLowerCase() < b.toLowerCase())
            return -1;
        if (a.toLowerCase() > b.toLowerCase())
            return 1;
        return 0;
    });
    document.getElementById('beef').innerHTML = Arrays;
}
<br>
  <form name="hey">
    Enter value:<br>
    <input type="" name="firstname" value=""><br>
    <button type="button" onclick="displayMessage();">Add to list</button>
  </form>
  <p id="pie"></p>
<br>
  <p id="beef"></p>
<br>
  <button type="button" onclick="count();sort();">Click to count and sort</button>
<br>
  <p id="counting"></p>
<br>
  <p id="sorting"></p>
<br>