js之数据字母索引排序。

用于通讯录,或者商品列表

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;
			}
原创文章 38 获赞 35 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_42690547/article/details/92663588