JS-比较函数中嵌套函数,可以排序【对象数组】

 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));        

 

posted @ 2017-03-22 16:58  xing.org1^  阅读(1150)  评论(0编辑  收藏  举报