您的位置:首页 > 其它

对象数组通过对象的属性进行排序

2018-01-17 17:37 357 查看
最常见的对数组进行排序,可以用sort()方法,按照数组中元素的首字母或者数字大小进行排序

var arr = [2,5,13,7,4,9,1];
var arr1 = arr.sort();
console.log(arr);  // [1, 13, 2, 4, 5, 7, 9]
console.log(arr1);   // [1, 13, 2, 4, 5, 7, 9]


sort()方法会改变原来的数组,并且sort方法并不是严格按照数字大小排序的。

如果想对数组按照大小进行排序,则需要在sort()方法添加比较函数

var arr = [2,5,13,7,4,9,1];
arr.sort(function(a,b){
return a-b;    // -1 升序排列
})
console.log(arr);   // [1, 2, 4, 5, 7, 9, 13]


比较函数compare返回值特点:

若a小于b,在排序后的数组中a应该出现在b之前(即升序排列),则返回小于0的值

若a等于b,则返回0

若a大于b,则返回一个大于0的值

那么可不可以利用sort方法对对象数组按照对象属性进行排序呢?

答案是可以的

像上面对数组按照大小排序,指定比较函数一样,只是此时比较的是对象的属性

上代码:对下列对象数组,按照age排序

var infoObj=[
{
name:"张三",
sex:'female',
age:30
},
{
name:"李四",
sex:'male',
age:20
},
{
name:"王五",
sex:'female',
age:40
}
];
// 指定排序的比较函数
function compare(property){
return function(obj1,obj2){
var value1 = obj1[property];
var value2 = obj2[property];
return value1 - value2;     // 升序
}
}
var sortObj = infoObj.sort(compare("age"));
console.log(sortObj); //


最后打印出来的结果如下所示:

[
{
name:"李四",
sex:'male',
age:20
},
{
name:"张三",
sex:'female',
age:30
},
{
name:"王五",
sex:'female',
age:40
}
];


这样就完成了对象数组按照对象属性排序啦!! !
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐