排序字符串的数字部分?

时间:2017-11-08 18:37:42

标签: javascript sorting typescript

我们有一堆SomeItems,其字段为someId,格式为(简化/替换为假人): abc.def1.<someNumber> 我有一个SomeItems数组,并按照这样排序:

let rows = someItems.sort((lhs, rhs) => lhs.someId > rhs.someId)

这几乎只是按字母顺序排序,所以这意味着订单有点奇怪:

abc.def1.1
abc.def1.1234
abc.def1.1235
abc.def1.2
abc.def1.234

我反而希望它在数字上排序 - 如1,2,234,1234等。

干净的方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用String#localeCompare选项。

&#13;
&#13;
var array = ['abc.def1.1', 'abc.def1.1234', 'abc.def1.1235', 'abc.def1.2', 'abc.def1.234'];

array.sort(function (a,b) {
    return a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' });
});

console.log(array);
&#13;
&#13;
&#13;