javascript - 按十进制对数字数组进行排序
问题描述
我试图找出如何按十进制对数字数组进行排序。我就是这个数组
[9, 9.10, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9]
通过使用排序 9.1 在 9.2 之前,但我需要在 9.9 之后使用 9.1,因此顺序如下:
9, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 9,10
我怎么能强制这样做?
谢谢
解决方案
好吧,您必须将它们作为字符串而不是数字来使用。您需要将它们分成两部分并根据部分而不是整体进行比较。
var items = ['9', '9.10', '9.2', '9.3', '9.9', '8', '7', '6'];
items.sort(function(a, b) {
const partsA = a.split(".");
const partsB = b.split(".");
if (partsA[0] === partsB[0]) {
return partsA[1] === partsB[1] ? 0 : (+partsA[1] || 0) > (+partsB[1] || 0) ? 1 : -1;
}
return +partsA[0] > +partsB[0] ? 1 : -1;
});
console.log(items);
推荐阅读
- linux - Inotify 无法识别目录中的新文件
- ruby - 检查字符串是否包含列表中的值
- json - 如何在 LUA 中读取地图
- javascript - 使用 d3.js 加载 csv 数据时出现问题
- c# - 未处理的异常呈现组件:在“窗口”中找不到“AuthenticationService”
- r - 将 n 对开始日期和结束日期的宽格式转换为长格式
- python - 所以我正在尝试使用 atom 在我的 mac 上运行 python 脚本,但由于某种原因它无法正常工作
- javascript - 电子邮件功能在本地服务器上有效,但在 Web 服务器上无效
- javascript - Javascript中的原型概念,我说对了吗?
- spring-data-jpa - DB2 不接受 UUID