用于通讯录,或者商品列表
1。排序前
{[ ],[ ],[ ]}
2。排序后
{A:{},B:{},C:{}}
// 处理数据按字母排序分类。
sortData(data,field){//data原数据,field数据的拼音键名。
let letter_reg = /^[A-Z]$/;
let list = [];
let letter = '';
for (let i = 0; i < data.length; i++) {
// 添加 # 分组,用来 存放 首字母不能 转为 大写英文的 数据
list['#'] = [];
// 首字母 转 大写英文
letter = (data[i][field]).slice(0, 1).toUpperCase();
// 是否 大写 英文 字母
if (!letter_reg.test(letter)) {
letter = '#';
}
// 创建 字母 分组
if (!(letter in list)) {
list[letter] = [];
}
// 字母 分组 添加 数据
list[letter].push(data[i]);
}
// 转换 格式 进行 排序;
let resault = [];
for (let key in list) {
resault.push({
letter: key,
list: list[key]
});
}
resault.sort((a,b) => {
return a.letter.charCodeAt(0) - b.letter.charCodeAt(0);
});
// # 号分组 放最后
let last_arr = resault[0];
resault.splice(0, 1);
resault.push(last_arr);
// 转换 数据 格式
let json_sort = {}
for (let i = 0; i < resault.length; i++) {
json_sort[resault[i].letter] = resault[i].list;
}
return resault;
}