【发布时间】:2018-01-18 13:37:35
【问题描述】:
我得到了以下对象
{
"20170007": {
"id": 1
},
"20170008": {
"id" : 2
},
"20170009": {
"id": 3
},
"20170010": {
"id": 4
}
}
想要的输出:
{
"20170010": {
"id": 4
},
"20170009": {
"id": 3
},
"20170008": {
"id" : 2
},
"20170007": {
"id": 1
}
}
我的尝试:
const obj = {
"20170007": {
"id": 1
},
"20170008": {
"id" : 2
},
"20170009": {
"id": 3
},
"20170010": {
"id": 4
}
}
const reverseObj = (obj) => {
let newObj = {}
Object.keys(obj)
.sort()
.reverse()
.forEach((key) => {
console.log(key)
newObj[key] = obj[key]
})
console.log(newObj)
return newObj
}
reverseObj(obj)
奇怪的是,当我在 forEach 中使用 console.log 键时,键是相反的。但是当我将密钥分配给 newObj 时,输出仍然是原始顺序...... 这是怎么回事?
编辑:
感谢我查看地图对象的所有回复。 Map
new Map([iterable])
这实际上是我正在寻找的,并且订单是有保证的。
【问题讨论】:
-
与数组不同,对象不保证键的存储顺序。您应该阅读以下内容:stackoverflow.com/questions/5525795/…
-
如果你想订购...使用数组
-
你是如何使用地图的?我现在确实遇到了这个问题