打字稿 - 对字符串进行降序排序

gon*_*250 17 arrays typescript

我想排序string[]递减的方式.到目前为止,我所做的是以下代码:

let values = ["Saab", "Volvo", "BMW"]; // example 

values.sort();
values.reverse();
Run Code Online (Sandbox Code Playgroud)

它正在工作,但我想弄清楚是否有更好的方法来做到这一点.

Tho*_*hom 38

您需要创建一个比较函数并将其作为sort函数的参数传递:

values.sort((one, two) => (one > two ? -1 : 1));
Run Code Online (Sandbox Code Playgroud)

  • 在比较之前对两者调用 uppercase() 。 (7认同)

Dve*_*Dve 7

最新的答案是您可以利用String.prototype.localCompare()获得数字比较值

简单的例子:

let values = ["Saab", "Volvo", "BMW"];
values.sort((a, b) => b.localeCompare(a))
Run Code Online (Sandbox Code Playgroud)

这也不会导致TypeScript警告,因为输出的localCompare是数字

可以在这里查看更多信息和其他函数参数https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare

  • @VirajSingh 要对数字字符串值进行排序,您需要使用 `values.sort((a, b) => b.localeCompare(a, undefined, {numeric: true}))` (7认同)

She*_*ngh 6

使用以下代码按升序和降序对 Array 进行排序。

const ascending: any= values.sort((a,b) =>  (a > b ? 1 : -1));
const descending: any= values.sort((a,b) => (a > b ? -1 : 1))
Run Code Online (Sandbox Code Playgroud)