按十进制排序的数字数组



我正试图找出如何按十进制排序数字数组。我是这个数组

[9, 9.10, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9]

使用sort 9.1在9.2之前,但我需要的是9.1在9.9之后,所以顺序如下: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);

最新更新