【问题标题】: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>