当前位置: 首页 > Web前端 > JavaScript

算法题:IP地址和版本号排序

时间:2023-03-26 20:43:29 JavaScript

项目中遇到问题,需要对IP地址进行排序:letarr=["10.3.72.160","10.3.71.106","10.3.71.102","10.3.69.108"]思路很简单,先实现一个比较两个版本号的函数,然后作为数组排序方法的compareFunction传入。函数比较(a,b){consta1=a.split(“。”);consta2=b.split(".");//IP地址共有4位for(letn=0;n<4;n++){consti=+a1[n];constj=+a2[n];如果(ij)返回1;}return0;}arr.sort(比较);那么版本号的排序就有点困难了,因为版本号的位数是不固定的。这里假设版本号最多三位,即版本号可以取1-3位:constversions=['0.5.1',??'0.1.1','2.3.3','0.302.1','4.2','4.3.5','4.3.4'];还是一样,先实现一个比较两个版本号的函数,然后作为数组排序方法的compareFunction传入:functioncompare(a,b){consta1=a.分裂(”。”);consta2=b.split(".");//版本号可以取1-3位//如果位数不足,补零for(letn=0;n<3;n++){consti=(nj)返回1;}返回0;}versions.sort(比较);这里有一个小技巧,数组排序方法其实不用通过compareFunction也可以排序:["10.3.72.160","10.3.71.106","10.3.71.102","10.3.69.108"].sort();//['10.3.69.108','10.3.71.102','10.3.71.106','10.3.72.160']根据MDN文档换句话说,如果没有指定compareFunction,则元素按字符的Unicode位置排序转换后的字符串。参考:Array.prototype.sort()-MDN