我需要按字母顺序排列从最新到最旧的Angular软件版本列表(即1.10.3.e,1.9.5.b,1.7.3、1.5.1.c)。我一直在使用.sort(),它按字母顺序排序,但将值视为字符串,导致任何1.10版本在1.5版本之后进行排序,因为它分别查看1和0.我试图做.sort(((a,b )=> b-a),它将列表完全随机化,而不是对其进行排序。我也尝试过使用.slice('。'),它似乎不起作用。
有什么想法吗?
答案 0 :(得分:1)
这不是一个容易回答的问题,因为要考虑一些变量。 假设您将永远不会拥有1.1、1.a之类的版本,那么以下方法就可以解决问题。
Settings.System class
答案 1 :(得分:1)
解决方案 1):带有“ 0”的临时键盘:
(如果版本号的一部分可能超过2位数字,则padStart可以更改为3、4,...)
var vers = [ '1.10.3.e', '1.9.5.b', '1.7.3', '1.5.1.c' ];
console.log( vers );
var temp = vers.map( function( s ){
return s.split('.').map( function( n ){ return n.padStart(2,'0'); } ).join('.');
} )
temp.sort();
vers = temp.map( function( s ){
return s.split('.').map( function( n ){ return n.replace(/^0+/, ''); } ).join('.');
} )
console.log( temp );
console.log( vers );
解决方案 2):按整数和字符串分别排序。
我认为这是更优雅的解决方案,即使它有些复杂。
(已经给出了这样的整数答案)