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

效果图如下

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)。

时间: 2024-10-08 20:50:36

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

Javascript 处理 JSON 数据 示例

最近做了一个 MEAN stack 的 app .后台用 NodeJS 从 Jira rest api 获得JSON数据并做处理,然后前端用 AngularJS Ajax call 获得处理后的 JSON 数据,显示到 App 上.处理了很多 JSON 数据,决定编一个例子,写一个总结. JSON 数据处理,基本就是 JSON String 和 JSON Object 之间的转换. JSON String 转换成 JSON Object 用 JSON.parse 方法.反之,用 JSON. St

【自制工具类】struts返回json数据包装格式类

自己写的一个给struts返回的json数据包装格式类,不喜勿喷,原创,需在项目中引入com.alibaba.fastjson的jar包 先看下效果(这里没有使用msg,有兴趣的往下看): 上demo: 1 import java.util.HashMap; 2 3 4 /** 5 * JSON响应处理工具类 6 * 7 * 返回一个json对象,包含status/msg/data, 8 * checkOK()默认status:200/checkFail()默认status:500 9 * 其中

json 数据交换格式与java

http://wiki.mbalib.com/wiki/数据交换 数据交换是指为了满足不同信息系统之间数据资源的共享需要,依据一定的原则,采取相应的技术,实现不同信息系统之间数据资源共享的过程. 数据交换格式:需要交互的数据的封装格式: 主要考虑两点: 1)数据的组织: 2)数据类型的保真: http://baike.baidu.com/link?url=TPtlUBxpINIvU2Zc3NJDSlkDON133FUx3lp-IuNIzCHjfoRmZX8jgHUPrTbppDPffEXalnY

iOS 中 JSON 数据交换格式

     JSON (JavaScript Object Notation)是一种轻量级的数据交换格式.JSON 的具体教程,可以参见 JSON 中国:http://www.json.org.cn/index.htm ,当然还有 JSON 在线校验格式化工具:http://www.bejson.com/ ,希望深入学习 JSON 可以参考其他教程.JSON 的轻量级是相对于 XML 文档结构而言的,描述项目字符少,所以描述相同的数据所需的字符个数要少,当然传输的速度就会提高而流量也会减少.  

JavaScript如何处理JSON数据

JSON (Javescript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包. JSON的规则很简单: 对象是一个无序的“‘名称/值’对”集合.一个对象以“{”(左括号)开始,“}”(右括号)结束.每个“名称”后跟一个“:”(冒号):“‘名称/值’ 对”之间使用“,”(逗号)分隔 举个简单的例子: js 代码 function sho

JavaScript根据Json数据来做的模糊查询功能

类似于百度搜索框的模糊查找功能 需要有有已知数据,实现搜索框输入字符,然后Js进行匹配,然后可以通过鼠标点击显示的内容,把内容显示在搜索框中 当然了,正则只是很简单的字符匹配,不具备多么复杂的判断 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>模糊查询</title> <style> *{

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

一.摘要 JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传输格式.本文并不详细介绍 JSON 本身的细节,旨在讨论如何使用 C++ 语言来处理 JSON.关于 JSON 更具体的信息,可参见 JSON 官网:http://www.json.org. 二.本文选择处理 JSON的 C++ 库 本文选择一个第三方库 jsoncpp 来解析 JSON.jsonc

漂亮的表格样式;jQuery清楚表格所有行;js解析后台传过来的JSON数据;动态生成表格数据

一 : 先看看漂亮的表格 css代码: .mylist { width: auto; height:auto; border:1px solid #accdf4; margin-top:10px; font-family:"宋体"; font-size:12px; color:#155c9f; text-align:center; border-collapse: collapse; } .mylist th { background-color:#d0e4ff; text-align

Json数据交互格式介绍和比较

1.什么是数据交互格式? 就是客户端和服务端进行信息传输的格式(xml和json),双方约定用什么格式进行传输,然后解析得到自己想要的值 xml扩展标记语言,属于重量级(第一占宽带.第二解析难) json属于轻量级的数据交互格式(不占宽带,解析很简单) 2.xml和json优缺点 xml优点:格式统一,符合标准:容易与其它系统进行远程交互,数据共享比较方便 xml缺点:xml文件庞大,文件格式复杂,传输占宽带:   服务器和客户短需要话费大量代码来解析xml,导致服务器和客户端代码变得异常复杂且