js 请教更方便的数字比较方法

俺是平凡人 2017-03-15 11:20:23

function compare(a,b){
var a1= a.split('.'),
b1= b.split('.');
if( parseInt(a1[0]) < parseInt(b1[0]) ){
return false
}else if(parseInt(a1[0]) <= parseInt(b1[0]) && parseInt(a1[1]) < parseInt(b1[1]) ){
return false
}else if(parseInt(a1[0]) <= parseInt(b1[0]) && parseInt(a1[1]) <= parseInt(b1[1]) && parseInt(a1[2]) < parseInt(b1[2]) ){
return false
}else if(parseInt(a1[0]) <= parseInt(b1[0]) && parseInt(a1[1]) <= parseInt(b1[1]) && parseInt(a1[2]) <= parseInt(b1[2]) && parseInt(a1[3]) < parseInt(b1[3]) ){
return false
}
return true;
}
var a='19.29.45.35',
b='9.3.21.4';
console.log(compare(a,b));

因为字符串直接比较19和9这样的值就会比较错误,所以用按.分割,在用parseInt转换后比较靠谱点
但是上面的比较方法好像太累赘了,有没有更简便的方法比较出来呢,谢谢
...全文
148 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐江小鱼 2017-03-17
  • 打赏
  • 举报
回复
浮点数可以用parseFloat()进行转化,而整数可以使用parseInt()全局函数,不知道你为何要搞的如此复杂。 如果觉得本人提供的建议有助于你解决问题,请转1元辛苦费到账户1339405643@qq.com,支持一下原创。
scscms太阳光 2017-03-17
  • 打赏
  • 举报
回复
对数字用正则补0,再比较 =================此方法不妥!数字长度本身没限制。 var a='1111111.29.45.35', b='222222.3.21.4'; console.log(compare(a,b));//返回false
    function compare(a,b){
        //本来可以以数组长短判断大小,但不可避免可能出现"0."
        //方法是:分割成数组后再翻转过来,从后比较起元素即可!
        var a1 = a.split(".").reverse();
        var b1 = b.split(".").reverse();
        for(var t1,t2, len = Math.max(a1.length,b1.length);len--;){
            t1 = a1[len] | 0;
            t2 = b1[len] | 0;//转数字,不够长的数组会变成0
            if(t1 > t2){
                return true;
            }else if(t1 < t2){
                return false;
            }
        }
        return "两者相等";
    }
    var a = '0.0.169.88888888.45.35',
        b = '169.777777777777.21.4';
    console.log(compare(a,b));
天际的海浪 2017-03-15
  • 打赏
  • 举报
回复
对数字用正则补0,再比较

        function compare(a,b){
            var a1= a.replace(/\d+/g,function(s){return ("00000"+s).slice(-6);}),
                b1= b.replace(/\d+/g,function(s){return ("00000"+s).slice(-6);});
            console.log(a1);
            console.log(b1);
            return a1 >= b1;
        }
        var a='19.29.45.35',
            b='9.3.21.4';
        console.log(compare(a,b));
似梦飞花 2017-03-15
  • 打赏
  • 举报
回复
split后是一个数组 用for循环

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧