我们有一堆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等。
干净的方法是什么?
答案 0 :(得分:2)
您可以使用String#localeCompare
选项。
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;