js对json数组排序
介绍
JavaScript 有一个原生的 Sort 方法,可以用来对数组进行排序。但是,根据数组的性质,实现会有所不同。
data=["a","z","c","w","j"];
alert (data.sort( ));
强烈推荐
海量程序代码,编程资源,无论你是小白还是大神研究借鉴别人优秀的源码产品学习成熟的专业技术强势助力帮你提高技巧与技能。在此处获取,给你一个全面升级的机会。只有你更值钱,才能更赚钱
如果你是初级程序员可以研究别人的代码提高技术,如果你喜欢搞网盟或者外包,可以让你快速建站,还等什么赶快关注吧,我们会持续输出相关资源
上面的排序方法可以毫无问题地对数组进行排序,因为它是一个字符串元素数组。
JSON 返回类型是一个对象数组。因此 sort 方法不能直接用于对数组进行排序。但是,我们可以使用comparer 函数作为“sort”方法的参数来实现排序。
comparer 函数具有以下格式:
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
comparer 函数的返回值基本上标识了后续数组元素的排序顺序。总结如下:
- 如果 ComparingFunction(a, b) < 0,则 a 将被排序到比 b 低的索引。因此a将首先出现。
- 如果 ComparingFunction (a, b) 返回 0,则 a 和 b 将保留各自的位置。排序顺序不会有任何变化。
- 如果 ComparingFunction (a, b) > then 0,则 b 将被排序到比 a 更低的索引。因此 b 将首先出现。
可以调用comparer 函数对 JSON 数组进行排序,如下所示:
var array = [{
"EmployeeName": "John",
"Experience": "12",
"Technology": "SharePoint"
}, {
"EmployeeName": "Charles",
"Experience": "9",
"Technology": "ASP.NET"
}, {
"EmployeeName": "Jo",
"Experience": "3",
"Technology": "JAVA"
}, {
"EmployeeName": "Daine",
"Experience": "7",
"Technology": "Sql Server"
}, {
"EmployeeName": "Zain",
"Experience": "6",
"Technology": "C#"
}];
//Comparer Function
function GetSortOrder(prop) {
return function(a, b) {
if (a[prop] > b[prop]) {
return 1;
} else if (a[prop] < b[prop]) {
return -1;
}
return 0;
}
}
array.sort(GetSortOrder("EmployeeName")); //Pass the attribute to be sorted on
document.write("Sorted Employee Names : ");
for (var item in array) {
document.write("<br>" + array[item].EmployeeName);
}
array.sort(GetSortOrder("Technology")); //Pass the attribute to be sorted on
document.write("<br><br> Sorted Technology Names : ");
for (var item in array) {
document.write("<br>" + array[item].Technology);
}
Output
Sorted Employee Names:
Charles
Daine
Jo
John
Zain
Sorted Technology Names:
ASP.NET
C#
JAVA
SharePoint
Sql Server
当 AJAX 调用返回 JSON 数组时,此辅助方法会派上用场,该数组必须经过排序并动态绑定到 html DOM 以供最终用户显示。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!