前言

记录一次在项目开发中遇到的情况。后台返回一个排好序的对象作为折线图的数据,按要求根据日期顺序进行展示。首先要清楚一点是js对象是无序的,即使后台排好了序,还是会错乱,所以需要在前端渲染前做一遍排序操作。


排序

  • js对象是没办法直接进行排序的,可以针对对象的某个属性或键值来排序,最后将对应的value取出来。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
let obj = {
20210601:{date:20210601,name:'a',age:22},
20210604:{date:20210604,name:'b',age:20},
20210602:{date:20210602,name:'c',age:18},
20210603:{date:20210603,name:'d',age:26}
}

let arr = []

// 将key值排序
let sortKeys = Object.keys(obj).sort((a,b)=>{
return obj[a] - obj[b]
})

console.log(sortKeys) //  ["20210601", "20210602", "20210603", "20210604"]

// 循环排列好的 key, 组成一个新的数组
for (var index in sortKeys) {
arr.push(obj[sortKeys[index]])
}

console.log(arr)