对象进行排序,网上不好找比较全面的排序,此处记录下,需要的可以收藏
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)
复制代码
此处在${index}_${item[0]
防止浏览器序列化影响排序,去掉后可以看到排序被打乱了
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END