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