有个类似微信通讯录的功能 但是安卓有兼容性问题,不过也记录一下吧
// 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
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。