打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
javascript 数组对象根据指定属性排序
关于数组排序马上会想到sort方法,或者reverse方法 但是后者只是简单的逆序而已不能满足大部分需求。
前者功能强大便于扩展,该方法有一个自定义排序函数,一般而言针对数字或者同类型不复杂元素很容易进行自定义排序函数,该函数有两个参数:
比如数组var arr=[2,3,5,1,4] ; 需要升序排列,我们可以这样:
function Compare(va1,va2){ return va2-va1;}
arr.sort(Compare);        alert(arr);最后输出1,2,3,4,5
但是如果遇到复杂的数组元素,比如:
var data = [{ name: "jiang", age: 23 }, { name: "zheng", age: 18 }, { name: "baidu", age: 8 }, { name: "javascript", age: 19}];
数组中含有对象对象中有许多属性,如何根据属性排序呢?
这时候就要重写排序规则函数了,可是该函数只接受两个参数,如何才能根据特定属性排序呢,比如这里的age,name
熟悉函数特性的都知道,函数在javascript中不同于其他语言,函数是对象,函数中可以返回函数,因此可以在外函数中传入属性,内函数接收两个参数,比如这里的数组中对象元素。
实现如下:
//自定义排序函数,传入属性,返回接收两个参数的排序函数
function createComparsionFunction(propertyName)
{
return function(object1, object2)
{
var value1 = object1[propertyName];
var value2 = object2[propertyName];
if (value1 < value2)
{
return -1;
} else if (value1 > value2)
{
return 1;
} else
{
return 0;
}
}
}
var data = [{ name: "zheng", age: 5 }, { name: "jiang", age: 18 }, { name: "google", age: 11 }, { name: "javascript", age: 19}];
document.write("----------------------原始序列-------------------------", "</br>");
for (var i = 0, ilen = data.length; i < ilen; i++)
{
document.write(data[i].name + ":" + data[i].age, "</br>");
}
document.write("----------------------age升序-------------------------", "</br>");
data.sort(createComparsionFunction("age")); //根据age排序
for (var i = 0, ilen = data.length; i < ilen; i++)
{
document.write(data[i].name + ":" + data[i].age, "</br>");
}
document.write("----------------------name升序-------------------------", "</br>");
data.sort(createComparsionFunction("name")); //根据age排序
for (var i = 0, ilen = data.length; i < ilen; i++)
{
document.write(data[i].name + ":" + data[i].age, "</br>");
}
效果如下:
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
javaScript知识点总结(必看篇)
js中arguments的作用
JavaScript sort() 方法
浅谈Javascript数组索引
JavaScript函数补完:sort()排序
js和jquery的数组过滤grep()和filter()数组去重去nullundefind
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服