http://www.cnblogs.com/hechaoyang/archive/2011/06/20/2085282.html
在某项目中,需要实现用户自定义菜单的显示顺序,以及某项菜单是否显示,摸索了很久,最后找到了一个自己比较满意的思路:
①首先在后台使用C#获取数据库中的菜单数据,生成一个包含菜单数据项的JSON数组(由于某种原因没有使用SQL中的ORDER BY),如下:
var menuData1=[
{ "orderid" :-10, "text" : "主页" , "title" : "个人网站主页" , "url" : "Default.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :10, "text" : "个人新闻" , "title" : "个人新闻" , "url" : "News.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :5, "text" : "发表论文" , "title" : "发表论文" , "url" : "Paper.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :2, "text" : "出版专著" , "title" : "出版专著" , "url" : "Monograph.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :7, "text" : "参与项目" , "title" : "参与项目" , "url" : "Project.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :8, "text" : "个人荣誉" , "title" : "个人荣誉" , "url" : "Prize.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :1, "text" : "发明专利" , "title" : "发明专利" , "url" : "Patent.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :0, "text" : "文件共享" , "title" : "文件共享" , "url" : "FileShare.aspx?TeacherID=153" , "visible" : true , "target" : "_self" }
]; |
②这时需要先将数组按orderid升序排序,注意,sort方法会改写原来的数组:
menuData1.sort( function (a, b) { return a.orderid > b.orderid ? 1 : -1;} ); //升序
|
③经过排序后,结果为:
menuData1=[ { "orderid" :-10, "text" : "主页" , "title" : "个人网站主页" , "url" : "Default.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :0, "text" : "文件共享" , "title" : "文件共享" , "url" : "FileShare.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :1, "text" : "发明专利" , "title" : "发明专利" , "url" : "Patent.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :2, "text" : "出版专著" , "title" : "出版专著" , "url" : "Monograph.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :5, "text" : "发表论文" , "title" : "发表论文" , "url" : "Paper.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :7, "text" : "参与项目" , "title" : "参与项目" , "url" : "Project.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :8, "text" : "个人荣誉" , "title" : "个人荣誉" , "url" : "Prize.aspx?TeacherID=153" , "visible" : true , "target" : "_self" },
{ "orderid" :10, "text" : "个人新闻" , "title" : "个人新闻" , "url" : "News.aspx?TeacherID=153" , "visible" : true , "target" : "_self" }
]; |
④然后根据menuData1[i].visible属性,将可视菜单项显示出来(其中String.Format见《在Javascript中实现类似C#中string.Format的功能》一文):
var menuString = "<ul><li class=\"menuDiv\"></li>" ;
for ( var i=0;i<menuData1.length;i++) {
if (menuData1[i].visible) {
menuString += String.Format( "<li><a title=\"{0}\" class=\"menuA\" onfocus=\"this.blur()\" href=\"{1}\" target=\"{2}\">{3}</a></li><li class=\"menuDiv\"></li>" , menuData1[i].title, menuData1[i].url, menuData1[i].target, menuData1[i].text);
}
} menuString += "</ul>" ;
$(menuContainer).innerHTML = menuString; |
相关推荐
总结起来,"json_ksort 二维数组键值排序源码"涉及到的是在PHP中对包含JSON数据的二维数组进行键值排序的自定义实现。虽然具体的源码未给出,但是通过理解PHP的ksort函数和递归方法,我们可以创建自己的解决方案来...
总的来说,易语言的ksort函数在处理JSON数据的键值排序中扮演着重要角色。通过合理运用,我们可以高效地对二维数组进行排序,从而更好地管理和分析数据。学习这一知识点,有助于提高易语言程序的健壮性和数据处理...
这个方法只适用于单层JSON对象,即JSON对象中不包含嵌套的JSON对象或数组。如果需要处理嵌套的JSON结构,那么需要递归处理或者使用更复杂的解析库,如Jackson或Gson,它们提供了更强大的JSON操作功能。 在实际开发...
对JSON数组进行排序,实际上就是对这个数组中的元素进行排序。 在JavaScript中,我们可以直接使用数组的`sort()`方法来对JSON数据进行排序。`sort()`方法接受一个比较函数作为参数,该函数定义了排序的规则。比较...
在 JavaScript 中,数组是一种常用的数据结构,用于存储多个值。本部分主要介绍如何创建数组、访问数组元素以及对数组进行各种操作。 ##### 创建数组 1. **使用 `new Array()` 构造函数:** - 示例: ```...
在JavaScript中,可以使用`Math.random()`函数来生成一个0到1之间的随机数,然后通过数组的`sort()`方法配合随机数来实现数组的随机排序。下面是一个简单的实现方法: ```javascript function shuffleArray(array) ...
Json 数据处理技巧是指在 JavaScript 中对 Json 数据进行处理和操作的技术和方法。Json 数据是一种轻量级的数据交换格式,广泛应用于 Web 开发、移动应用等领域。在实际开发中,经常需要对 Json 数据进行处理,如...
需要注意的是,尽管JSON.stringify()可以实现排序,但它并不改变原始JSON对象,只有在序列化后的新字符串中体现排序结果。因此,如果你需要在内存中保持排序状态,最好在排序后重新构建JSON对象。 总结,JSON数据的...
在JavaScript中,你可以直接对JSON对象的数组成员进行排序。假设我们有以下JSON数据: ```json { "data": [ {"name": "Tom", "age": 25}, {"name": "Jerry", "age": 30}, {"name": "Spike", "age": 20} ] ...
在JavaScript中,JSON数据通常以对象数组的形式存在,每个对象包含多个键值对。 2. jQuery的getJSON方法:这是一个方便的方法,用于从服务器获取JSON数据。它接受一个URL作为参数,并在请求成功返回后,自动将返回...
例如,假设我们有以下JSON数组: ```json [ {"name": "item1", "clickIndex": 3}, {"name": "item2", "clickIndex": 1}, {"name": "item3", "clickIndex": 2} ] ``` 为了按照"clickIndex"字段的值从大到小排序...
1. **数据结构**:JSON数据通常以数组的形式存在,其中每个元素是一个对象,每个对象包含多个键值对。例如: ```json [ { "orderNo": 1, "name": "Item1" }, { "orderNo": 3, "name": "Item3" }, { "orderNo": ...
在本示例中,我们将探讨如何使用JavaScript语言对JSON对象数组进行排序,并删除具有相同id值的重复项。通过这样的操作,我们可以确保最终得到的数组既有序,又不含重复记录。 首先,JSON对象是一种轻量级的数据交换...
在JavaScript编程中,排序是常见的数据操作之一。本篇文章主要探讨了一个通用的JavaScript函数,用于对数组或对象进行排序,特别是在处理对象数组时非常实用。这个函数允许根据对象的某个属性值(甚至嵌套属性)进行...
JSON数组在JavaScript中表现为`[]`,它可以包含任意类型的数据,如字符串、数字、布尔值、null,甚至是其他数组或对象。数组的创建和操作在JavaScript中是相当直观的: 1. **创建数组**: - `var arrayObj = new ...
4. **Sort**:允许对JSON数组进行排序,确保输出的一致性。 5. **Nest**:将多个键值对合并到一个新的嵌套结构中。 6. **Unnest**:相反,它将嵌套结构拆分为单独的键值对。 7. **List**:处理JSON数组,如合并或...
我们定义了一个名为`JsonSort`的函数,它接受两个参数:要排序的JSON数组和排序的键值`key`。这个函数使用冒泡排序算法,遍历数组并根据`key`字段的值进行比较和交换元素位置。 ```javascript function JsonSort...
下面详细解释如何实现将PHP数组转换为JSON字符串,并在JavaScript中使用该字符串: 1. 创建并填充PHP数组。如文档中所示,首先通过SQL查询从数据库获取数据,并使用while循环填充数组,为每个地区创建一个数组,...
可以看出,这是一个包含多个对象的JSON数组,每个对象代表一个人的信息。每个对象有三个属性: 1. **name**:字符串类型,表示人的名字; 2. **lovesPandas**:布尔类型,表示该人是否喜欢大熊猫; 3. **age**:...
在JavaScript中,我们可以通过直接赋值的方式来添加键值对到JSON对象中。例如: ```javascript var test = {}; // 创建一个空JSON对象 test['firstname'] = "tank"; // 添加键为'firstname',值为'tank'的键值对...