效果图如下

1.json数据格式

var _people=[{name:'朱瑞',url:'aaaaaa',nick:'zhu'},{name:'刘桂清',url:'aaaaa',nick:'liu'}];这里按姓氏排序借用了nick,不用nick的话,需要加载一个汉字拼音对照数组,判断匹配

2.javascript代码
  1 (function ($){
  2     function SortByGroup(arr,option){
  3         this.option=option;
  4         this.arr=arr||[];
  5     }
  6     SortByGroup.prototype={
  7         init:function(){
  8             this.sort();
  9             return this.sortByGroup(this.group());
 10         },
 11         sort:function(){
 12             var tag=this.option.tag;
 13             this.arr=this.arr.sort( function compareFunction(param1,param2){
 14                  return param1[tag].localeCompare(param2[tag]);
 15              });
 16         },
 17         group:function(){
 18             var arr=[],count=0,def;
 19             var charTemp="-1",temp;
 20             for(var i in this.arr){
 21                 temp=this.arr[i];
 22                 if(charTemp!==temp[this.option.tag].charAt(0)){
 23                     var one=[];
 24                     one.push(temp);
 25                     arr[count]=one;
 26                     charTemp=temp[this.option.tag].charAt(0);
 27                     count++;
 28                 }else{
 29                     arr[count-1].push(temp);
 30                 }
 31             }
 32             return arr;
 33         },
 34         sortByGroup:function(arr){
 35             var temp;
 36             for(var i =0;i<arr.length;i++){
 37                 temp=arr[i];
 38                 temp.sort(function compareFunction(param1,param2){
 39                     return param1['name'].localeCompare(param2['name']);
 40                 });
 41             };
 42             return arr;
 43         }
 44     };
 45     function RenderPage(arr){
 46         this.model=arr;
 47         this.index=[];
 48         this.lastIndex="-1";
 49     }
 50     RenderPage.prototype={
 51         init:function(){
 52
 53             $("#container").html(this.render());
 54             $("#index").html(this.renderIndex());
 55             this.bindEvent();
 56         },
 57         getIndex:function(nick){
 58             this.index.push(nick.charAt(0).toUpperCase());
 59
 60         },
 61         bindEvent:function(){
 62             $("#index a").mouseover(function(){
 63
 64                 var tag=$(this).attr("data");
 65                 if(tag!="more"){
 66                     $("#container .block").css("display","none");
 67                     $("#container ."+tag).css("display","block");
 68                 }else{
 69                     $("#container .block").css("display","block");
 70                 }
 71
 72             });
 73
 74
 75         },
 76         render:function(){
 77             var str="";
 78             for(var i=0;i<this.model.length;i++){
 79                 str+=this.renderGroup(this.model[i],i);
 80             }
 81
 82             return str;
 83         },
 84         renderGroup:function(arr,num){
 85             var str="",temp;
 86
 87             for(var i=0;i<arr.length;i++){
 88                 if(i==0){
 89                     this.getIndex(arr[i].nick);
 90                     temp=this.index[num];
 91
 92                     str='<div class="block '+temp+'"><h3>'+temp+'</h3><ul>'
 93                 }
 94                 str+=this.renderOne(arr[i]);
 95             }
 96             if(str) str+="<div class='clear'></div></ul></div>";
 97             return str;
 98         },
 99         renderOne:function(one){
100             return '<li><a href="'+one.url+'" target="_blank">'+one.name+'</a></li>';
101         },
102         renderIndex:function(){
103             var str="";
104
105             for(var i =0;i<this.index.length;i++){
106                 str=str+"<a data='"+this.index[i]+"'>"+this.index[i]+"</a>";
107             }
108             str+="<a data='more'>MORE</a>";
109             return str;
110         }
111     };
112     new RenderPage(new SortByGroup(_people,{tag:'nick'}).init()).init();
113 })(jQuery);

3.html页面结构

<!-- 区域32(按字母检索)Start -->
<div id="pd32" class="w1020"><div class="title4"><span>按字母搜索</span><p id="index" class="index"></p><div class="clear"></div></div><!--block--><div id="container" class="container"></div><!--block-->
</div>
<!-- 区域32(按字母检索)End -->

  

4.css样式

#pd32 .title4{border-bottom:1px solid #cecece;padding-bottom:10px;
}#pd32 .title4 p{float:right;
}#pd32 .title4 p a{background:none;padding:0px;float:none;color:#d26213;font-family:"Microsoft Yahei","����";font-size:22px;cursor:pointer;margin-left:12px;
}#pd32 .block{margin-top:15px;
}#pd32 .block h3{border-bottom:1px dotted #cfcfcf;font-size:30px;font-family:"Arial","Microsoft Yahei","����";color:#000;height:40px;line-height:40px;padding-bottom:5px;margin-bottom:8px;
}#pd32 .block ul{zoom:1;
}#pd32 .block li{float:left;display:inline;width:102px;height:30px;line-height:30px;overflow:hidden;font-size:16px;font-family:"Microsoft Yahei","����";
}#pd32 .block li a{color:#000;
}

  

注:另外需要引入jquery,这里的json数据是在开始就引入的。后面的js代码直接引用了people这个变量(比较low)。

转载于:https://www.cnblogs.com/licifer/p/4603056.html

javascript通过json数据按格式生成一个按字母分类排序的分类信息表相关推荐

  1. ajax使用json下拉框,ajax请求后台得到json数据后动态生成树形下拉框的方法

    如下所示: $(function(){ $.ajax({ url:"departmentAction_getAllDep.action", type:"post" ...

  2. 使用 C++ 处理 JSON 数据交换格式

    From: http://blog.csdn.net/xt_xiaotian/article/details/5648388 使用 C++ 处理 JSON 数据交换格式 一.摘要 JSON 的全称为: ...

  3. 修改软件服务器json返回数据格式,AngularJS处理服务器端返回的JSON数据的格式问题...

    用ng的$http服务发起ajax请求,php返回的JSON数据格式要正确! 一开始我的php页面是这样返回数据的: if($result){ $oid = mysqli_insert_id($con ...

  4. Javascript 处理 JSON 数据 示例

    最近做了一个 MEAN stack 的 app .后台用 NodeJS 从 Jira rest api 获得JSON数据并做处理,然后前端用 AngularJS Ajax call 获得处理后的 JS ...

  5. 【Java】JSON数据交换格式及其使用案例(聊天工具)

    数据交换格式主要分为纯文本格式,XML格式和JSON格式.其中纯文本格式是一种简单的,无格式的数据交换方式:而XML格式和JSON格式可以带有描述信息,它们叫做"自描述的"结构化文 ...

  6. python获取json数据,快速生成excel

    需要的python 安装包: pip install requests pip install pandas 一.通过requests 获取网页json数据 url = 'http://192.168 ...

  7. JavaScript 解析 JSON 数据

    JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON ...

  8. XML和JSON 数据交换格式

    为什么80%的码农都做不了架构师?>>>    一.什么是数据交换格式? 客户端与服务器常用数据交换格式xml.json.html 二.数据交换格式应用场景 移动端(安卓.IOS)通 ...

  9. JavaWeb-----Ajax异步请求 json对象 服务器如何返回json数据 使用ajax完成一个案例

    1. 回顾 1. servlet的生命周期: 2. filter: 过滤放行和拦截一些资源.比如:黑白名单,登录校验,编码设置等.    (1)创建一个类并实现Filter接口以及重写接口的抽象方法 ...

最新文章

  1. FeiBoStr 斐波那契
  2. Android Studio你不知道的调试技巧
  3. 启动controller节点nova组件服务,报错ERROR 13
  4. 【Linux】一步一步学Linux——cd命令(20)
  5. 51 nod 1624 取余最长路 思路:前缀和 + STL(set)二分查找
  6. MVC下实现LayUI分页的Demo
  7. 牛客网暑期ACM多校训练营(第五场)
  8. (扩展欧几里德算法)zzuoj 10402: C.机器人
  9. 看图纸V3.2.1正式版[看图纸正式版下载]
  10. react获取鼠标位置_JavaScript 获取鼠标点击位置坐标
  11. 做独立app需要哪些东西?
  12. 四川眉山中院宣判两起特大跨国电信诈骗案
  13. Build error handing
  14. 微信成语接龙小程序|微擎框架|带流量主|前端+后端完整源码
  15. 云计算笔记---day3
  16. Kali从入门到出门-手记
  17. Markdown 新手指南
  18. 用JavaScript写一个类似于windows的气泡屏保效果
  19. echars 字符云效果,echars字符云颜色问题
  20. 国防科技大学计算机原理真题答案,1996年国防科技大学计算机原理和系统结构试题...

热门文章

  1. Android应用工程文件组成
  2. Chromium之各国语言切换
  3. 淘宝海量数据库之二:一致性选择
  4. 神色洋溢的 域名背后的故事
  5. 8月第1周安全回顾 0Day漏洞成企业最大威胁 应重视网络监听
  6. Ubuntu16.04.1 安装Nginx
  7. java与c/c++之间的数据交互-----jni点滴
  8. 机器学习02-分类、逻辑回归
  9. html 复选框 mysql_Html:实现带复选框的下拉框(一)
  10. 通用软件测试的6个角度