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

 <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 @ 2021-02-02 23:16  南风晚来晚相识  阅读(152)  评论(0编辑  收藏  举报