有个相似微信通讯录的性能 然而安卓有兼容性问题,不过也记录一下吧

// arr是传入的数组groupByDesc(arr) {    const [...zhCN] = '啊八擦搭蛾发噶哈击喀垃妈拿哦啪期然撒塌挖昔压匝'    // const [...EN] = 'abcdefghijklmnopqrstuvwxyz'    const [...EN] = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'    // 中文在i、u、v下没有对应的汉字    // const [...desc] = 'abcdefghjklmnopqrstwxyz'    const [...desc] = 'ABCDEFGHJKLMNOPQRSTWXYZ'    // 中文    const isChinese = /[\u4e00-\u9fa5]+/    // 英文    const pattern = /[a-zA-Z]/;    // const isSpecial = /[0-9*#@!%$&(),.+-]+/    const hashMap = {}    function findIndex(obj) {        let check        var length         let type = 'EN'        if(isChinese.test(obj) ){            length = zhCN.length            check = zhCN            type = 'zhCN'            console.log('中文')        }else{            length = EN.length            check = EN            console.log('英文')        }        for (var i = 0; i < length ; i++) {            console.log(obj,check[i],obj.localeCompare(check[i]))        if (obj.localeCompare(check[i]) < 0) {            if (type == 'zhCN') {            return i -1                 } else {                    return i                 }            }else if(obj.localeCompare(check[i]) == 0){                return i             }        }        return 22    }    arr.forEach(item => {        let hashCode        // 判断不是中文和英文        if(!pattern.test(item.nickname[0])&&!isChinese.test(item.nickname[0])){            hashCode = '#'            // 中文        }else if(isChinese.test(item.nickname[0] )){                        hashCode =   desc[findIndex(item.nickname[0] )]         // 英文        }else{            hashCode = EN[findIndex(item.nickname[0] )]        }        // 空        if (!hashMap[hashCode]) {            hashMap[hashCode] = []        }        // 赋值        hashMap[hashCode].push(item)    })    console.log(hashMap)    return hashMap}