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 @   xing.org1^  阅读(1151)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示