`

Javascript中实现JSON数组多键值排序

 
阅读更多

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 二维数组键值排序源码

    总结起来,"json_ksort 二维数组键值排序源码"涉及到的是在PHP中对包含JSON数据的二维数组进行键值排序的自定义实现。虽然具体的源码未给出,但是通过理解PHP的ksort函数和递归方法,我们可以创建自己的解决方案来...

    易语言-json_ksort 二维数组键值排序

    总的来说,易语言的ksort函数在处理JSON数据的键值排序中扮演着重要角色。通过合理运用,我们可以高效地对二维数组进行排序,从而更好地管理和分析数据。学习这一知识点,有助于提高易语言程序的健壮性和数据处理...

    java中对单层json进行key字母排序

    这个方法只适用于单层JSON对象,即JSON对象中不包含嵌套的JSON对象或数组。如果需要处理嵌套的JSON结构,那么需要递归处理或者使用更复杂的解析库,如Jackson或Gson,它们提供了更强大的JSON操作功能。 在实际开发...

    javascript中对JSON数据进行简单的排序[代码简单,一看就懂哈]

    对JSON数组进行排序,实际上就是对这个数组中的元素进行排序。 在JavaScript中,我们可以直接使用数组的`sort()`方法来对JSON数据进行排序。`sort()`方法接受一个比较函数作为参数,该函数定义了排序的规则。比较...

    JavaScript数组对象JSON学习笔记

    在 JavaScript 中,数组是一种常用的数据结构,用于存储多个值。本部分主要介绍如何创建数组、访问数组元素以及对数组进行各种操作。 ##### 创建数组 1. **使用 `new Array()` 构造函数:** - 示例: ```...

    js json 重新随机重组排序方法demo

    在JavaScript中,可以使用`Math.random()`函数来生成一个0到1之间的随机数,然后通过数组的`sort()`方法配合随机数来实现数组的随机排序。下面是一个简单的实现方法: ```javascript function shuffleArray(array) ...

    json数据处理技巧(字段带空格、增加字段、排序等等).docx

    Json 数据处理技巧是指在 JavaScript 中对 Json 数据进行处理和操作的技术和方法。Json 数据是一种轻量级的数据交换格式,广泛应用于 Web 开发、移动应用等领域。在实际开发中,经常需要对 Json 数据进行处理,如...

    JSON数据两种排序例子

    需要注意的是,尽管JSON.stringify()可以实现排序,但它并不改变原始JSON对象,只有在序列化后的新字符串中体现排序结果。因此,如果你需要在内存中保持排序状态,最好在排序后重新构建JSON对象。 总结,JSON数据的...

    Json的两种排序方法

    在JavaScript中,你可以直接对JSON对象的数组成员进行排序。假设我们有以下JSON数据: ```json { "data": [ {"name": "Tom", "age": 25}, {"name": "Jerry", "age": 30}, {"name": "Spike", "age": 20} ] ...

    jQuery对JSON数据进行排序输出的方法

    在JavaScript中,JSON数据通常以对象数组的形式存在,每个对象包含多个键值对。 2. jQuery的getJSON方法:这是一个方便的方法,用于从服务器获取JSON数据。它接受一个URL作为参数,并在请求成功返回后,自动将返回...

    JSON字段属性从大到小排序

    例如,假设我们有以下JSON数组: ```json [ {"name": "item1", "clickIndex": 3}, {"name": "item2", "clickIndex": 1}, {"name": "item3", "clickIndex": 2} ] ``` 为了按照"clickIndex"字段的值从大到小排序...

    前端 JSON 数据 排序

    1. **数据结构**:JSON数据通常以数组的形式存在,其中每个元素是一个对象,每个对象包含多个键值对。例如: ```json [ { "orderNo": 1, "name": "Item1" }, { "orderNo": 3, "name": "Item3" }, { "orderNo": ...

    JS实现对json对象排序并删除id相同项功能示例

    在本示例中,我们将探讨如何使用JavaScript语言对JSON对象数组进行排序,并删除具有相同id值的重复项。通过这样的操作,我们可以确保最终得到的数组既有序,又不含重复记录。 首先,JSON对象是一种轻量级的数据交换...

    JavaScript对象数组排序函数及六个用法

    在JavaScript编程中,排序是常见的数据操作之一。本篇文章主要探讨了一个通用的JavaScript函数,用于对数组或对象进行排序,特别是在处理对象数组时非常实用。这个函数允许根据对象的某个属性值(甚至嵌套属性)进行...

    json使用大全

    JSON数组在JavaScript中表现为`[]`,它可以包含任意类型的数据,如字符串、数字、布尔值、null,甚至是其他数组或对象。数组的创建和操作在JavaScript中是相当直观的: 1. **创建数组**: - `var arrayObj = new ...

    jolt用Java编写的JSON到JSON转换库

    4. **Sort**:允许对JSON数组进行排序,确保输出的一致性。 5. **Nest**:将多个键值对合并到一个新的嵌套结构中。 6. **Unnest**:相反,它将嵌套结构拆分为单独的键值对。 7. **List**:处理JSON数组,如合并或...

    javascript对JSON数据排序的3个例子

    我们定义了一个名为`JsonSort`的函数,它接受两个参数:要排序的JSON数组和排序的键值`key`。这个函数使用冒泡排序算法,遍历数组并根据`key`字段的值进行比较和交换元素位置。 ```javascript function JsonSort...

    php数组转换js数组操作及json_encode的用法详解

    下面详细解释如何实现将PHP数组转换为JSON字符串,并在JavaScript中使用该字符串: 1. 创建并填充PHP数组。如文档中所示,首先通过SQL查询从数据库获取数据,并使用while循环填充数组,为每个地区创建一个数组,...

    json格式数据整合

    可以看出,这是一个包含多个对象的JSON数组,每个对象代表一个人的信息。每个对象有三个属性: 1. **name**:字符串类型,表示人的名字; 2. **lovesPandas**:布尔类型,表示该人是否喜欢大熊猫; 3. **age**:...

    json格式数据的添加,删除及排序方法.docx

    在JavaScript中,我们可以通过直接赋值的方式来添加键值对到JSON对象中。例如: ```javascript var test = {}; // 创建一个空JSON对象 test['firstname'] = "tank"; // 添加键为'firstname',值为'tank'的键值对...

Global site tag (gtag.js) - Google Analytics