js Array sort的问题

        var array = ['四年级10','四年级1','四年级12','四年级15','四年级3','三年级10','三年级1','三年级12','三年级15','三年级3','三年级10','三年级10','一年级10', '二年级2', '一年级2', '二年级10'];

        array.sort(function(x, y){
            if(x.match(/\D/g).join("") > y.match(/\D/g).join("")){
                return 1;
            }else if(x.match(/\D/g).join("") < y.match(/\D/g).join("")){
                return -1
            }else {
                return 0;
            }
        });

        console.log(array);

        array.sort(function(x, y){

            if(x.match(/\D/g).join("") != y.match(/\D/g).join("")) return;

            return parseInt(x.match(/\d/g).join("")) - parseInt(y.match(/\d/g).join(""));

        });

        console.log(array);

这样的一个排序,目的很明显;但是第二次sort时,数组明显发生了变化,不是第一次sort的顺序了;
如果array的个数很少,四个的话,会有效果,但是数目已增加,就会乱了。为什么第二次sort时,会乱序;
哪位大牛给指点指点,或者还有更好的对这种array的排序方法?

阅读 2.6k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题