【问题标题】:I need to sort those numbers but it doesn't work in JavaScript [duplicate]我需要对这些数字进行排序,但它在 JavaScript 中不起作用 [重复]
【发布时间】:2019-01-23 18:18:30
【问题描述】:

我正在尝试解决这门课程,但作为 JavaScript 的初学者,这有点难。本课程是关于对一组数字进行排序(抱歉我的英语不好,这不是我的第一语言)

我使用了 .sort() 方法,因为数字在一个数组中,但它一直告诉我这不是一个函数..

numbers = document.getElementById("numbers").value;

(function() { document.getElementById("run").addEventListener("click", function() {
    numbers.sort()
    alert(numbers);
  });
})();
<div class="field">
    <label for="numbers">Numbers:</label>
    <input type="text" name="numbers" id="numbers" readonly value="2, 4, 14, 10, 90, 23, 16" />
</div>
<div class="actions">
    <button type="button" id="run">Run</button>
</div>

当我运行我的代码时,它说 numbers.sort() 不是函数 但我怎么能用这个方法?? 提前谢谢你!

【问题讨论】:

标签: javascript sorting numbers


【解决方案1】:

numbers 是一个字符串,因此您不能直接对字符串使用排序。您需要将其更改为数组。这里我是用 split 函数来做的。

function handle() {
    let numbers = document.getElementById("numbers").value;
    numbers=numbers.split(',').sort((a,b)=>a-b)
    alert(numbers);
};
<div class="field">
<label for="numbers">Numbers:</label>
<input type="text" name="numbers" id="numbers" readonly value="2,4,14,10,90,23,16" />
</div>
<div class="actions">
<button type="button" id="run" onclick='handle()'>Run</button>
</div>

【讨论】:

    【解决方案2】:

    输入值只是一个长字符串。 您需要将字符串拆分为数字字符串表示的数组,然后将它们转换为数字类型。 要使用比较功能,您需要提供比较功能,否则,该功能按 unicode 表示排序。 这是一个工作代码:

    function handle() {
        var numbersInputElemnt = document.querySelector('#numbers');
        var numbersStr = numbersInputElemnt.value;
        var numbers = numbersStr.split(', ').map(function(numStr) {
      return +numStr;
    });
        numbers.sort(function compareNumbers(a, b) {
      return a - b;
    });
    
    
        alert(numbers);
    };
    <div class="field">
        <label for="numbers">Numbers:</label>
        <input type="text" name="numbers" id="numbers" readonly value="2, 4, 14, 10, 90, 23, 16" />
    </div>
    <div class="actions">
          <button type="button" id="run" onclick="handle()">Run</button>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 2021-03-21
      • 1970-01-01
      • 2016-11-03
      • 2019-11-12
      • 2020-08-29
      相关资源
      最近更新 更多