根据对象某一属性进行排序

来源:互联网 发布:数据库保险箱 编辑:程序博客网 时间:2024/06/05 20:44

根据对象某一属性进行排序

var data = [    { name: "tom" , age: 18 },     { name: "jack" , age: 19 },     { name: "mary" , age: 20 }];//定义一个比较器function compare(propertyName) {return function(object1, object2) {  var value1 = object1[propertyName];  var value2 = object2[propertyName];  if (value2 < value1) {    return 1;  } else if (value2 > value1) {    return -1;  } else {    return 0;  }}}//使用方法,根据age对数组的每个对象进行排序data.sort(compare("age"));console.log(data);

结果
这里写图片描述

sort的用法

sort() 方法可以接受一个 方法为参数 ,这个方法有两个参数。分别代表每次排序比较时的两个数组项。sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递 给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。

var arr = [2,1,4,5,3] ;arr.sort(function(a,b){     if( a>b ){        return 1 ;  //返回1表示正在比较的两个数需要交换位置    }else if( a<b ){        return -1 ; //返回1表示正在比较的两个数不需要交换位置    }else{         return 0 ;    };});console.log( arr );   // [1, 2, 3, 4, 5]