对象属性排序

Posted on   猫头唔食鱼  阅读(1270)  评论(0编辑  收藏  举报

数组里,有几个对象,需要按照属性排序,可以使用下面方法:

复制代码
  //按照id从小到大排序
        var arr = [
            { name: "zs", id: '9' },
            { name: "ls", id: '16' },
            { name: "ww", id: '3' },
        ];

        function compare(property) {
            return function (a, b) {
                var value1 = a[property];
                var value2 = b[property];
                return value1 - value2;  // value1-value2是从小到大    如果是从大到小 return value2 -value1
            }
        }

        //正常for循环是没有排序的
        for(let i =0;i<arr.length;i++){
            console.log(arr[i]);
        }
         console.log(arr[0]);//9 
         console.log(arr[1]); //16
         console.log(arr[2]); // 3

         //使用排序方法后,打印的内容,按照id的从小到大排序
        console.log(arr.sort(compare('id')));
        for(let i = 0;i<arr.length;i++){
            console.log(arr.sort(compare('id'))[i]);
        }
        console.log(arr.sort(compare('id'))[0]) // 3
        console.log(arr.sort(compare('id'))[1]) // 9
        console.log(arr.sort(compare('id'))[2]) //16
复制代码

 

=============== update in 2021.6.3 =======================

 

上面写那么多,实际上几行代码ok

复制代码
 let arr = [
            {name:'zs',age:12},
            {name:'ls',age:6},
            {name:'ww',age:24},
        ];
        // 从小到大
        let compare = (property)=>(a, b)=> a[property] - b[property] 
        console.log(arr.sort(compare('age')));
        // 从大到小
        let compare2 = (property) =>(a,b) => b[property] - a[property]
        console.log(arr.sort(compare2('age')));
复制代码

 

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示