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

最常见的对数组进行排序,可以用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]

 

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

答案是可以的 
像上面对数组按照大小排序,指定比较函数一样,只是此时比较的是对象的属性 
上代码:对下列对象数组,按照age排序

var infoObj=[

{

name:"张三",

sex:'female',

age:30

},

{

name:"李四",

sex:'male',

age:20

},

{

name:"王五",

sex:'female',

age:40

} ];

// 指定排序的比较函数

function compare(property){

returnfunction(obj1,obj2){

var value1 = obj1[property];

var value2 = obj2[property];

return value1 - value2; // 升序

}

}

var sortObj = infoObj.sort(compare("age"));

console.log(sortObj); //

 

posted @ 2017-11-23 17:38  极速代码  阅读(419)  评论(0)    收藏  举报