使用 javascript 对数组进行排序,然后按特定顺序按值的小数部分排序

sum*_*rma 3 javascript arrays sorting typescript

我有一个数组:

let arr = ['100.12', '100.8', '100.11', '100.9'];
Run Code Online (Sandbox Code Playgroud)

排序后得到输出:

“100.11”、“100.12”、“100.8”、“100.9”

但我希望它像页面索引一样排序:

“100.8”、“100.9”、“100.11”、“100.12”、


编辑:我有一些好的解决方案,但它们缺少一个地方,例如:

arr1 = ['100.12', '77.8', '88', '77.11', '77.12', '77.9', '77', '119', '120', '100.8', '100.11', '100', '100.9']
Run Code Online (Sandbox Code Playgroud)

结果会是这样的:

[“77.8”、“77.9”、“77.11”、“77.12”、“77”、“88”、“100.8”、“100.11”、“100.12”、“100”、“100.9”、“119”、“ 120英寸]

期望的是:

[“77”、“77.8”、“77.9”、“77.11”、“77.12”、“88”、“100”、“100.8”、“100.11”、“100.12”、“100.9”、“119”、“ 120英寸]

Has*_*mam 5

您可以使用string#localeComparewithnumeric属性根据数值对数组进行排序。

let arr = ['100.12', '77.8', '88', '77.11', '77.12', '77.9', '77', '119', '120', '100.8', '100.11', '100', '100.9'];
arr.sort((a, b) => a.localeCompare(b, undefined, {numeric: true}))
console.log(arr)
Run Code Online (Sandbox Code Playgroud)