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

   ①首先在后台使用C#获取数据库中的菜单数据,生成一个包含菜单数据项的JSON数组(由于某种原因没有使用SQL中的ORDER BY),如下:

 

  view sourceprint?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方法会改写原来的数组

 

  view sourceprint?menuData1.sort(function(a, b) { return a.orderid > b.orderid ?1 : -1;} );//

 

  ③经过排序后,结果为:

 

  view sourceprint?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的功能》一文):

  然后根据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;

时间: 2024-08-30 12:05:43

Javascript中实现JSON数组多键值排序的相关文章

JavaScript实现多维数组多键值排序方法

JavaScript的数组排序函数 sort方法,默认是按照ASCII 字符顺序进行升序排列. arrayobj.sort(sortfunction); 参数:sortFunction 可选项.是用来确定元素顺序的函数的名称.如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列. sort 方法将 Array 对象进行适当的排序:在执行过程中并不会创建新的 Array 对象. 如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一: 负值,如果所传递的

PHP二维数组排序问题详解(数组键值排序)

根据某个键值对二维数组进行排序是个常见问题,这里总结一个函数,可同时对两个键值分别排序,当然想要更多的话就自行解决吧. 但是如果需要排序的数组是一个二维数组,需要按照数组的键值排序,如下面这个二维数组,需要按照sort键名来排序,那么array_multisort() 就无法直接实现了: 实例一,  代码如下 复制代码 $arr = array( array( 'sort' => 3, 'a' => 'a', 'b' => 'b' ), array( 'sort' => 5, 'a

PHP中数组按键名和键值排序函数

而有时我们要求更复杂的排序.如按键名排序,这里用到 ksort($arr); 函数,它会根据数组的键名排序,并维持原有的键值关系.相对应的 asort($arr); 函数,是按键值排序,且维持原有的键值关系. 同样原理,rsort(); arsort(); krsort(); 函数除了排序是按降序排列外,其它与sort(); rsort(); ksort(); 相同. 数组操作是PHP很重要的基础,希望能好好运用. 一维数组 例子  代码如下 复制代码 <?php function my_sor

在JavaScript中使用JSON数据_javascript技巧

JSON 是 JavaScript 原生格式,这意味着 在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包. JSON语法 JSON建构于两种结构: 对象--名称/值对的集合.不同的语言中,它被理解为对象,纪录,结构,字典,哈希表,有键列表(keyed list),或者关联数组.一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"后跟一个":"(冒号):"'名称/值' 对

Java和JavaScript中使用Json方法大全

[本文转载于 Java和JavaScript中使用Json方法大全 ] 摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.C#.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率). 一.准备工作      

php对多维数组的某个键值排序方法

  php多维数组排序可以用array_multisort() 函数来处理,array_multisort() 函数可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序,关联(string)键名保持不变,但数字键名会被重新索引 排序顺序标志: SORT_ASC - 按照上升顺序排序 SORT_DESC - 按照下降顺序排序 排序类型标志: SORT_REGULAR - 将项目按照通常方法比较 SORT_NUMERIC - 将项目按照数值比较 SORT_STRING - 将项目按

array-如何访问 android 中的 json 数组?

问题描述 如何访问 android 中的 json 数组? 我想在程序中使用一个 json 文件.Json 文件结构如下,可以成功的访问 json 数组 "business",但是现在我想访问 business_cat 和 business_cat 中的cat 1 和 cat 2.我该如何访问这些值? { "business":[ { "id":"13", "category":"Dinner&q

php使用post数组的键值创建同名变量并赋值的方法_php技巧

本文实例讲述了php使用post数组的键值创建同名变量并赋值的方法.分享给大家供大家参考.具体如下: 这段代码可以自动根据post数组的键值创建同名变量,这个功能使用非常方便,不用提前声明变量 <?php $expected=array('username','age','city','street'); foreach($expected as $key){ if(!empty($_POST[$key])){ ${key}=$_POST[$key]; } else{ ${key}=NULL;

JavaScript返回当前会话cookie全部键值对照的方法_javascript技巧

本文实例讲述了JavaScript返回当前会话cookie全部键值对照的方法.分享给大家供大家参考.具体如下: 下面的JS代码输出全部的cookie键值对照 <!DOCTYPE html> <html> <body> Cookies associated with this document: <script> document.write(document.cookie); </script> </body> </html&g