javascript - 在 JavaScript 中对数值数组进行排序

标签 javascript arrays sorting

我正在尝试理解获取数字数组并对其进行排序的 JS 代码片段:

var msg = document.getElementById("message");

var v = [30,2,1,9,15];
msg.innerHTML += "<p><strong>Original order:</strong> [" + v + "]<p>";

v.sort(sortLowToHigh);
msg.innerHTML += "<p><strong>After sorting:</strong> [" + v + "]<p>";

function sortLowToHigh(a, b) {
    return a - b;
}

输出:

Original order: [30,2,1,9,15]

After sorting: [1,2,9,15,30]

我意识到 sort() 函数在单独使用时会将数组元素转换为字符串,而排序的结果是不理想的。

但我不知道 sortLowToHigh 如何以及基于什么过程训练 sort 方法按升序对数值进行排序。

最佳答案

sort接受比较函数。该函数需要做的就是比较两个值,如果 a 小于 b 则返回小于 0 的值,如果 a 大于 b 则返回大于 0 的值,如果它们相等则返回 0。使用该比较,排序函数处理实际排序。

对于数字,这个比较函数很简单。你只要返回a - b , 你得到了 <0 的返回值, 0>0 .

关于javascript - 在 JavaScript 中对数值数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27333920/

相关文章:

java - 根据内部日期列表对 JAVA 父列表进行排序

algorithm - 如何修改Lomuto分区方案?

javascript点击游戏使用较少的html

javascript - 为什么我的 UI/Draggable 'create' 事件被传递了一个空的 'ui' 对象?

javascript - 为什么我的代码总是选择相同的数组项?

javascript - 使用javascript在没有逗号的html中显示数组的值

c - 我想对c中的字符数组进行排序

javascript - Node JS)未定义的图像上传问题

javascript - 如何使用任何 Node 库尤其是 axios 将文件上传到服务器?

c++ - 为什么第二个代码有效而第一个无效?