首页 > 解决方案 > 按十进制对数字数组进行排序

问题描述

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

[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

我怎么能强制这样做?

谢谢

标签: javascriptarrayssortingmethods

解决方案


好吧,您必须将它们作为字符串而不是数字来使用。您需要将它们分成两部分并根据部分而不是整体进行比较。

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);


推荐阅读