前言

js 按照字母进行分组的一个实例。

正文

var list = [
{
'name' : '张三',
'py' : 'zhnagsan'
},
{
'name' : '李四',
'py' : 'lisi'
},
{
'name' : '王五',
'py' : 'wangwu'
},
{
'name' : '赵六',
'py' : 'zhaoliu'
},
]; var resault = data_letter_sort(list, 'py'); console.log(resault); /**
* 数据 按照 拼音首字母 排序 并分组
*
* @param {Json} data ; 需要 排序的 数据
* @param {String} field ;必须;排序所依据的 字段 名
*
* @return {Json} ; 例如:{A:[{},{}],B:[{},{}],C:[{}],#:[]}
*/
function data_letter_sort (data, field) {
var letter_reg = /^[A-Z]$/;
var list = new Array();
for (var i = 0; i < data.length; i++) {
// 添加 # 分组,用来 存放 首字母不能 转为 大写英文的 数据
list['#'] = new Array();
// 首字母 转 大写英文
letter = (data[i][field]).substr(0, 1).toUpperCase();
// 是否 大写 英文 字母
if (!letter_reg.test(letter)) {
letter = '#';
}
// 创建 字母 分组
if (!(letter in list)) {
list[letter] = new Array();
}
// 字母 分组 添加 数据
list[letter].push(data[i]);
}
// 转换 格式 进行 排序;
var resault = new Array();
for (var key in list) {
resault.push({
letter: key,
list: list[key]
});
}
resault.sort(function (x, y) {
return x.letter.charCodeAt(0) - y.letter.charCodeAt(0);
});
// # 号分组 放最后
var last_arr = resault[0];
resault.splice(0, 1);
resault.push(last_arr); // 转换 数据 格式
var json_sort = {}
for (var i = 0; i < resault.length; i++) {
json_sort[resault[i].letter] = resault[i].list;
} return json_sort;
}

后续

这个js 按照字母进行分组的局限性在于只能分英文的,中文的是用编码来进行划分,后续补齐。

js 按照字母进行分组的更多相关文章

  1. js 处理字母 大小写的 一些函数

    js中实现字母大小写转换主要用到了四个js函数: 1.toLocaleUpperCase2.toUpperCase3.toLocaleLowerCase4.toLowerCase 下面就这四个实现大小 ...

  2. Js~对数组进行分组户数

    在sql里有group by,主要对数据结果集进行分组统计,而对于JS来说,有时我们也需要这种功能,例如一个数据{"dog","cat","dog&q ...

  3. PHP获取汉字首字母并分组排序

    <?php /** * 错误状态码定义 * User: xiucai * Date: 2018/3/11 * Time: 12:23 */ namespace extend; class Wor ...

  4. 小程序开发笔记(八)—Js数组按日期分组显示数据

    数据分组展示有两种方式,一种是后端直接传入分组格式的Json数据,另一种是我们在前端自己转换格式,这里我们在前端处理转换按日期分组的数据格式 1.例如后端返回数据格式为: [{createtime:' ...

  5. 获取汉字首字母并分组排列 PHP

    1.代码class Character{ /** * 数组根据首首字母排序 */ /** * 二维数组根据首字母分组排序 * @param array $data 二维数组 * @param stri ...

  6. js 关于字母和数字之间的转换

    方法:字符转ascii码:用charCodeAt();        ascii码转字符:用fromCharCode(); 例子: 字母转成数字: var str='A'; str.charCodeA ...

  7. js版iphone通讯录分组列表效果

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  8. js字符串字母大小写转换

    toLocaleUpperCase 方法 返回一个字符串,其中所有的字母字符都被转换为大写,同时适应宿主环境的当前区域设置. stringVar.tolocaleUpperCase( )必选的 str ...

  9. JS首字母进行分类合并加排序

    let array = ['fds', 'ewfg1', 'cvd', 'ew', 'qer', 'jjh', 'rth', 'asd', 'vsd', 'tteh', 'fxv']; let map ...

  10. 【转】JS字符(字母)与ASCII码转换方法

    var strVariable; for(var i=0;i<25;i++) { console.log(String.fromCharCode((65+i))); } strVariable. ...

随机推荐

  1. Sharding-JDBC源码解析与vivo的定制开发

    作者:vivo IT 平台团队 - Xiong Huanxin Sharding-JDBC是在JDBC层提供服务的数据库中间件,在分库分表场景具有广泛应用.本文对Sharding-JDBC的解析.路由 ...

  2. AT_abc342_d 题解

    UD 2024/2/24 22:36 感谢 Lixiang_is_potato 指出一处笔误. 本文同步发表于洛谷. 赛时挂了,但是赛后 3min AC,我是飞舞. 题意 给你一个长度为 \(N\) ...

  3. MySql变量说明

    1 #变量 2 /* 3 系统变量: 4 全局变量 5 会话变量 6 7 自定义变量: 8 用户变量 9 局部变量 10 11 */ 12 #一.系统变量 13 /* 14 说明:变量由系统定义,不是 ...

  4. mybatis查询大批量数据的几种方式

    问题背景 公司里有很多需要跑批数据的场景,这些数据几十万到几千万不等,目前我们采用的是分页查询,但是分页查询有个深度分页问题,上百万的数据就会查询的很慢 常规解决方案 全量查询 分页查询 流式查询 游 ...

  5. IE故障修复之点击无反应

     第一步,点击开始,运行,打开Regedit,即注册表编辑器.依次找到 >>HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer ...

  6. 🚀🚀🚀Elasticsearch 主副分片切换过程中对业务写入有影响吗

    先说下结论,只要集群中的工作节点过半,有候选的master节点,挂掉的节点中不同时包含索引的主分片和副分片,那么ES是可以做到让业务无感知的进行主副分片切换的. 蓝胖子会先讲解下ES集群写入文档的原理 ...

  7. find第二天

    find第二天 1.找出/tmp目录下,属主不是root,且文件名不以f开头的文件 find /tmp ! -user root -a ! -name 'f*' 或者 find /tmp ! -use ...

  8. python高级技术(进程二)

    一 进程对象及其他方法 '''一台计算机上面运行着很多进程,那么计算机是如何区分并管理这些进程服务端的呢?计算机会给每一个运行的进程分配一个PID号如何查看 windows电脑 进入cmd输入task ...

  9. 记录--纯CSS实现骚气红丝带

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在本文中,我们将探讨如何使用 CSS 以最少的代码创造出精美的 CSS 丝带形状,并最终实现下面这个效果: 下面我们使用html和css来 ...

  10. 全网首套完整containerd容器工具教程

    1.Containerd的由来 [Docker名噪一时,捐出runC]2013年docker公司在推出docker产品后,由于其对全球技术产生了一定的影响力,Google公司明显感觉到自己公司内部所使 ...