众所周知,json对象是没有顺序的。只有数组才有排序功能。
但我们遇到的业务场景里面,不仅仅需要对数组排序,也有需要对对象排序的情况。
例如下面这种数据:
let data = {zhangsan: {age: 18, height: 189}, lisi: {age: 18, height: 175}}
此时如果对这种数据排序。
可以这样写:
let data = {zhangsan: {age: 18, height: 189}, lisi: {age: 18, height: 175}}
let map = new Map()
for (let k in data) {
map.set(k, data[k])
}
let arrayObj = Array.from(map)
arrayObj.sort((a,b) => {return b[1][lowerName] -a[1][lowerName]})
此时会获得一个新的数组,你打印出来发现,格式变了
变成这样了。但我们想要的还是一开始那样的json格式,那就再把它转回来就好了。
let obj = {}
for (let i in arrayObj) {
let k = arrayObj[i][0]
let value = arrayObj[i][1]
obj[k] = value
}
顺便提一句,想要转成map的话,可以如下:
var result = new Map(arrayObj.map(i => [i[0], i[1]]));