JavaScript 对整数字符串进行排序

JavaScript sorting a string of integers

所以我有这种形式,它接受一串数字,需要在每个分号和 space 处拆分。之后,它对数字和 returns 排序后的列表进行排序。

出于某种原因,当我单击按钮时,它没有 post 文本框中的值。

谁能帮我解决我的问题!谢谢。

编辑 1:将名称添加到表单并添加字段集

function sort() {
  var allNumbers = document.mainForm.mainSet.numbers.value.split("; ");
  allNumbers.parseFloat;
  for (var i = 0; i < allNumbers.length; i++) {
    allNumbers[i] = parseInt(allNumbers[i], 10);
  }
  allNumbers.sort();
  document.mainForm.mainSet.sorted.value = allNumbers.toString();
}
<form name="mainForm">
<fieldset name="mainSet">
  Enter Numbers:
  <input type="text" class="text" name="numbers" />
  <br/>
  <br/>Select Option:
  <select name="sortOption" id="dropDown">
    <option value="Ascending" class="select">Ascending</option>
    <option value="Descending" class="select">Descending</option>
  </select>
  <br/>
  <br/>Sorted Numbers:
  <input type="text" class="text" name="sorted">
  <br/>
  <br/>
  <input type="button" value="Sort Numbers" id="submit" onclick="sort()" />
</fieldset>
</form>

我在 HTML 中没有看到任何名为 "mainForm" 或 "mainSet" 的元素。同样,我也不完全确定 "allNumbers.parseFloat;" 的目的是什么,因为那不是调用函数的方式,而且 parseFloat 不是 Array.

的成员。

我想这就是您要找的。这将根据您在 sortOption 字段中选择的内容对号码进行排序。

var order;
function sort() {
  order = document.getElementById("dropDown").value;
  var allNumbers = document.getElementById("numbers").value.split("; ");
  var nums = [];
  for (var i = 0; i < allNumbers.length; i++) {
    nums.push(parseInt(allNumbers[i], 10));
  }
  nums.sort(function(a, b) {
    if (a > b)
      return order == 'asc' ? 1 : -1;
    else
      return order == 'asc' ? -1 : 1;
  });
  document.getElementById("sorted").value = nums.toString();
}
<form name="mainForm">
  <fieldset name="mainSet">
    Enter Numbers:
    <input id="numbers" type="text" class="text" name="numbers" />
    <br/>
    <br/>Select Option:
    <select name="sortOption" id="dropDown">
      <option value="asc" class="select">Ascending</option>
      <option value="desc" class="select">Descending</option>
    </select>
    <br/>
    <br/>Sorted Numbers:
    <input id="sorted" type="text" class="text" name="sorted">
    <br/>
    <br/>
    <input type="button" value="Sort Numbers" id="submit" onclick="sort()" />
  </fieldset>
</form>

function sort() {
    function asc(a,b)
    {
        return a - b;
    }
    
    function desc(a,b)
    {
        return b - a;
    }

    var allNumbers = document.getElementById("numbers").value.split("; ");
    var nums = [];
    var order = document.getElementById("dropDown").value;
    for (var i = 0; i < allNumbers.length; i++) {
        nums.push(parseInt(allNumbers[i], 10));
    }
    nums.sort((order == 'asc') ? asc : desc);
    document.getElementById("sorted").value = nums.toString(',');
}
<form name="mainForm">
  <fieldset name="mainSet">
    Enter Numbers:
    <input id="numbers" type="text" class="text" name="numbers" />
    <br/>
    <br/>Select Option:
    <select name="sortOption" id="dropDown">
      <option value="asc" class="select">Ascending</option>
      <option value="desc" class="select">Descending</option>
    </select>
    <br/>
    <br/>Sorted Numbers:
    <input id="sorted" type="text" class="text" name="sorted">
    <br/>
    <br/>
    <input type="button" value="Sort Numbers" id="submit" onclick="sort()" />
  </fieldset>
</form>