是否可以用一些 "between" 数字对数组进行排序?

Is it possible to sort array with some "between" numbers?

是否有可能以某种方式用一些“介于”之间的数字对数组进行排序?

[31, 33/34, 34, 29].sort((a, b) => a.toString().localeCompare(b.toString()))

//至return [29, 31, 33/34, 34] 相反 [0.9705882352, 29, 31, 34]

如评论中所述,唯一可行的方法是使用字符串来捕获数字。引擎会将您的 33/34 存储为小数。无法取回原始值。

这样做只是一个简单的解析和排序。

var nums = ['31', '33/34', '34', '29']

nums.sort((a, b) => Number(a.split('/')[0]) - Number(b.split('/')[0]));

console.log(nums);

如果您可以有多个数字将 33/34 推到正确的位置,现在您可能需要添加更多逻辑。不知道所有的用例,我不会尝试猜测。

当转换为字符串时,您正在转换分数 33/34 (=0.9705882352)。这就是 JS 解释器可见的所有内容:提供 0.970588235233/3466/68 并不重要。因此,正如@ninascholz 和@epascarello 所指出的,您必须从字符串开始。使用字符串,您的代码应该可以正常工作,如下面的演示所示:

const nums = ['31', '33/34', '34', '29']

nums.sort((a, b) => a.localeCompare(b));

console.log( nums );