【发布时间】:2022-01-08 07:02:50
【问题描述】:
鉴于我的对象的特殊性质,我一直在努力寻找有用的资源...我想简单地按字母顺序对对象进行排序,但我需要按我的键排序。
这是一个示例对象,它与我正在使用的对象具有相同的架构
{
"sections": [
{
"title": "21Q4 Results",
"states": {
"Maine": {
"string1":[{stuff1}],
"string2":[{stuff2}],
},
"Arkansas": {
"string1":[{stuff1}],
"string2":[{stuff2}],
},
"Kentucky": {
"string1":[{stuff1}],
"string2":[{stuff2}],
},
}
}
]
}
目标是按字母顺序排列sections.states。不幸的是,这个对象的结构是由我无法控制的 API 生成的,因此从后端更改结构并不是一个真正的选择。
实现这一目标的最佳方法是什么?任何帮助将不胜感激。
【问题讨论】:
-
也许我不明白,但你不能对对象内的对象键进行排序。您需要创建一个状态列表并对它们进行排序。 Object是一个hashmap数据结构,这意味着即使是js引擎也无法保证key的顺序
-
@Kinglish - 不幸的是,该特定方法不适用于对象 - 但数组仅适用于 results.states 不可用。这就是为什么我一直在努力寻找资源来帮助解决这个特定问题。
-
@captain-yossarian 实际上,对象是在一些 Vue 元素中渲染的,并且由于它们是循环的,首先对它们进行排序将允许我们按字母顺序显示它们。
-
可以考虑js Map developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 。它使键保持插入顺序。
标签: javascript json typescript