首字母排序中英文

7 篇文章 0 订阅
var vue = new Vue({
    data:{},
    methods:{
          //按首字母排序
        pySort:function(arr,empty){
            var $this = this;
            if(!String.prototype.localeCompare)
                return null;

            var letters ="ABCDEFGHIJKLMNOPQRSTUVWXYZ#".split('');
            $this.letters = letters;
            var zh ="啊把差大额发噶哈*级卡啦吗那哦爬器然撒他**哇西呀咋".split('');     //*占位没有i,u,v拼音开头的汉字

            var arrList = [];
            for(var m =0;m<arr.length;m++){
                arrList.push(arr[m].name);
            }

            var result = [];
            var curr;
            for(var i=0;i<letters.length;i++){
                curr = {letter: letters[i], data:[]};

                if(i!=26){
                    for(var j =0;j<arrList.length;j++){
                        var initial = arrList[j].charAt(0);           //截取第一个字符
                        if(arrList[j].charAt(0)==letters[i]||arrList[j].charAt(0)==letters[i].toLowerCase()){   //首字符是英文的
                            curr.data.push(arrList[j]);
                        }else if(zh[i]!='*'&&$this.isChinese(initial)){      //判断是否是无汉字,是否是中文
                            if(initial.localeCompare(zh[i]) >= 0 &&(!zh[i+1]||initial.localeCompare(zh[i+1]) <0)) {   //判断中文字符在哪一个类别
                                curr.data.push(arrList[j]);
                            }
                        }
                    }
                }else{
                    for(var k =0;k<arrList.length;k++){
                        var ini = arrList[k].charAt(0);           //截取第一个字符
                        if(!$this.isChar(ini)&&!$this.isChinese(ini)){
                            curr.data.push(arrList[k]);
                        }
                    }
                }

                if(empty || curr.data.length) {
                    result.push(curr);
                    /*curr.data.sort(function(a,b){
                        return a.localeCompare(b);       //排序,英文排序,汉字排在英文后面 (有问题)
                    });*/
                }
            }
            return result;
        },
        isChinese:function(temp){
              var re=/[^\u4E00-\u9FA5]/;
              if (re.test(temp)){return false  ;}
              return true ;
        },
        isChar:function(char){
            var reg = /[A-Za-z]/;
            if (!reg.test(char)){return false ;}
            return true ;
        },
    }
});


                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值