1 function createCompareFun(propertyName){
2 return function(object1,object2){
3 var value1 = object1[propertyName];
4 var value2 = object2[propertyName];
5 if(value1>value2){
6 return 1;
7 }else if(value1<value2){
8 return -1;
9 }else{
10 return 0;
11 }
12 };
13 }
14 var data = [{
15 name : "guo",
16 age : 23
17 },{
18 name : "zhao",
19 age : 28
20 },{
21 name : "zhang",
22 age : 24
23 }];
24
25 data.sort(createCompareFun("name"));
26 document.write("<hr/>用name排序,获得的第二位的元素的name值是:【"+data[1].name+"】");
27 data.sort(createCompareFun("age"));
28 document.write("<br/>用age进行排序,获得的最后一个元素的name是:【"+data[2].name+"】")
29
说明:createCompareFun()函数内部,嵌套一个内部函数,函数作为值被return返回,
内部函数传两个参数,并通过[]讲createCompareFun()函数的propertyName属性解析出来,在通过常规比较函数进行判断、比较。
在data中,定义了一个有三个元素的对象数组,最后调用createCompareFun()函数,并根据自己需要比较的属性来传参,函数对数组进行排序。得到比较的结果。
再加一个普通的比较函数
1 function compare(value1,value2){
2 if(value1>value2){
3 return 1;
4 }else if(value1<value2){
5 return -1;
6 }else{
7 return 0;
8 }
9 }
10 var arrM = [1,325,6,74,2]
11 console.log(arrM.sort(compare));