js数字中英文文字排序


/**

 * 数字,中英文名字排序

 * @param {Array} arrList 含有name的Object数组列表

 * @param {Boolean} empty 

 */

pySort(arrList,empty){

    if(!String.prototype.localeCompare)

      return null;

    let letters = "123456789ABCDEFGHJKLMNOPQRSTWXYZ".split('');

    let zh = "123456789阿八嚓哒妸发旮哈讥咔垃麻拏噢妑七呥扨它穵夕丫帀".split('');

    let re=/[\u4E00-\u9FA5]/,reg = /[A-Za-z]/,result = [],curr,ini,initial;

    for(let i=0;iletters.length;i++){

        curr = {letter: letters[i], data:[]};

        if(i!=35){

            for(let j =0;jarrList.length;j++){

                initial = arrList[j].name.charAt(0);//截取第一个字符

                if(arrList[j].name.charAt(0)==letters[i]||arrList[j].name.charAt(0)==letters[i].toLowerCase()){  //首字符是英文的

                    curr.data.push(arrList[j]);

                }else if(zh[i] != '*' &&  re.test(initial)){   //判断是否是无汉字,是否是中文

                    if(initial.localeCompare(zh[i],'zh') >= 0 && (!zh[i+1]||initial.localeCompare(zh[i+1],'zh') 0)) {  //判断中文字符在哪一个类别

                        curr.data.push(arrList[j]);

                    }

                }

            }

        }else{

            for(let k =0;karrList.length;k++){

                ini = arrList[k].name.charAt(0);      //截取第一个字符

                if( !reg.test(ini) && re.test(ini)){

                    curr.data.push(arrList[k]);

                }

            }

        }

        if(empty || curr.data.length) {

            result.push(curr);

            //curr.data.sort(function(a,b){

            //  return b.localeCompare(a);    //排序,英文排序,汉字排在英文后面

            //});

        }

    }

    return result;

},



评论0



    0.182464s