对象数组进行升序排列,并组装数据格式

 <script>
        let chushiArr = [{
                gradeName: '2021级',
                stageName: '小学'
            },
            {
                gradeName: '2022级',
                stageName: '小学'
            },
            {
                gradeName: '2026级',
                stageName: '小学'
            },
            {
                gradeName: '2029级',
                stageName: '小学'
            },
            {
                gradeName: '2023级',
                stageName: '小学'
            },
            {
                gradeName: '2020级',
                stageName: '小学'
            },
            {
                gradeName: '2023级',
                stageName: '初中'
            },
            {
                gradeName: '2023级',
                stageName: '初中'
            },
            {
                gradeName: '2020级',
                stageName: '初中'
            },
            {
                gradeName: '2029级',
                stageName: '初中'
            },
            {
                gradeName: '2020级',
                stageName: '高中'
            },
            {
                gradeName: '2019级',
                stageName: '高中'
            },
        ]



        // 找到没有重复的阶段
        function getunion(arr) {
            if (arr && arr.length > 0) {
                let newList = [];
                for (let i = 0; i < arr.length; i++) {
                    if (newList.indexOf(arr[i].stageName) == -1) {
                        newList.push(arr[i].stageName)
                    }
                }
                return newList;
            }
        };
        let nainjiArr = getunion(chushiArr);
        console.log("阶段", nainjiArr)


        //根据gradeName字段进行升序排列
        function compare(property, desc) {
            return function (a, b) {
                var value1 = a[property];
                var value2 = b[property];
                if (desc == true) {
                    // 升序排列
                    return parseInt(value1) - parseInt(value2);
                } else {
                    // 降序排列
                    return parseInt(value2) - parseInt(value1);
                }
            }
        }
        let arr = chushiArr.sort(compare("gradeName", true));


        // 构造数据结构
        function changeList(sateArr, changeArr) {
            let doUseArr = [];
            if (sateArr && sateArr.length > 0) {
                for (let i = 0; i < sateArr.length; i++) {
                    doUseArr.push({
                        stageName: sateArr[i],
                        cont: [],
                    })
                    for (let k = 0; k < changeArr.length; k++) {
                        if (sateArr[i] == changeArr[k].stageName) {
                            doUseArr[i].cont.push({
                                gradeName: changeArr[k].gradeName
                            })
                        }
                    }
                }
            }
            return doUseArr;
        };

        console.log("最后的排序", changeList(nainjiArr, arr));
    </script>

我们发现数字加汉字也是进行直接排序的哈;
通过  return parseInt(value1) - parseInt(value2) 进行排列

posted @   南风晚来晚相识  阅读(152)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示