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

简介: 对象数组进行升序排列,并组装数据格式
 <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) 进行排列


1425695-20210202231659714-1419468311.png

相关文章
|
3月前
按字典顺序排序
按字典顺序排序。
42 2
|
JSON 数据格式
JSON转数组后,筛选分组并输出,判断键值键值是否存在补0
JSON转数组后,筛选分组并输出,判断键值键值是否存在补0
77 0
|
JavaScript
多个js对象数组合并成一个对象数组的解决方案
多个js对象数组合并成一个对象数组的解决方案
325 0
|
9月前
根据二维数组中的某个字段进行排序
根据二维数组中的某个字段进行排序
43 0
从排列字符串到排列序列:解析增减字符串匹配问题
题目要求根据给定的字符串 s,构造一个排列序列 perm,其中排列序列中的数字满足以下规则: 如果 perm[i] < perm[i + 1],则对应的字符为 'I'; 如果 perm[i] > perm[i + 1],则对应的字符为 'D'。 我们需要根据字符串 s 中的字符,构造满足上述规则的排列序列 perm。
74 0
根据数组中对象的属性值进行排序
根据数组中对象的属性值进行排序
93 0
sort()排序以及多个属性数组对象排序(按条件排序)
sort()排序以及多个属性数组对象排序(按条件排序)
134 0
字符串&列表&元组&字典之间互转
字符串&列表&元组&字典之间互转
|
算法 Python
一日一技:包含元组的列表,对第一个元素升序第二个元素降序
一日一技:包含元组的列表,对第一个元素升序第二个元素降序
113 0
sort如果按字典序排列的细节
sort如果按字典序排列的细节
98 0