【发布时间】:2020-07-14 09:40:08
【问题描述】:
上下文
需要使用 lodash 按readingDate 对以下对象进行排序,我可以对其进行排序,但其索引未保留。
原始 JSON 对象
{
"Inventory Creation": [
{
"id": 150,
"reading": "12345",
"readingDate": "2020-07-14"
}
],
"Inventory & Check-in": [
{
"id": 151,
"reading": "12345",
"readingDate": "2020-11-14"
}
],
"Check-in": [
{
"id": 152,
"reading": "12345",
"readingDate": "2020-08-14"
}
]
}
我尝试过的代码
_.sortBy(unsorted, o => o[0].readingDate).reverse();
这里unsorted 包含上面的原始 JSON 对象
实际结果(我得到的)
{
0: [
{
"id": 151,
"reading": "12345",
"readingDate": "2020-11-14"
}
],
1: [
{
"id": 152,
"reading": "12345",
"readingDate": "2020-08-14"
}
],
2: [
{
"id": 150,
"reading": "12345",
"readingDate": "2020-07-14"
}
]
}
预期结果(我想要的)
{
"Inventory & Check-in": [
{
"id": 151,
"reading": "12345",
"readingDate": "2020-11-14"
}
],
"Check-in": [
{
"id": 152,
"reading": "12345",
"readingDate": "2020-08-14"
}
],
"Inventory Creation": [
{
"id": 150,
"reading": "12345",
"readingDate": "2020-07-14"
}
]
}
【问题讨论】:
-
您的原始 JSON 对象 实际上是一个对象,而不是数组,
_.sortBy排序后返回一个数组。为什么要对对象进行排序? -
感谢更正,让我更新问题,使其更易于理解。
-
没问题,虽然我还是不明白你为什么要对一个对象进行排序。
-
实际上是我正在处理的任务的要求,我需要在列表中显示JSON对象上方,并且该列表应按
readingDate排序 -
我明白了,那么请注意 JavaScript 不总是保证对象键的顺序,尤其是当这些键在字符串之间混合时和数字,如提到的here。
标签: javascript arrays lodash