对象进行排序

对象进行排序,网上不好找比较全面的排序,此处记录下,需要的可以收藏

const data = {
            728: {
                entry_date: "2017-05-22",
                project_status: 2,
            },
            1804: {
                entry_date: "2020-06-22",
                project_status: 1,
            },
            2411: {
                entry_date: "2021-04-26",
                project_status: 1,
            },
            1921: {
                entry_date: "2021-03-02",
                project_status: 3,
            },
            2381: {
                entry_date: "2021-04-28",
                project_status: 2,
            },
        }
复制代码

对data以字段project_status进行排序
思路:首先对象无法排序,需要转换为数组后进行排序
1.先取key值放置数组中

        var obj = data
        const keyList = []
        for (var key in obj) {
            keyList.push(key)
        }
        console.log(keyList)
        var mapList = data
        const resultList = new Map()
        for (let i = 0; i < keyList.length; i++) {
            resultList.set(keyList[i], mapList[keyList[i]])
        }
        console.log(resultList)
        const resultArr = Array.from(resultList)
        //对二维数组的第二个值进行排序
        resultArr.sort((a, b) => {
            return a[1].project_status - b[1].project_status
        })
        const sortObj = resultArr.reduce((obj, item, index) => {
            return { ...obj, [`${index}_${item[0]}`]: item[1] }
        }, {})
        console.log(sortObj)
复制代码

image.png

此处在${index}_${item[0]防止浏览器序列化影响排序,去掉后可以看到排序被打乱了

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享