【发布时间】:2019-07-07 11:55:54
【问题描述】:
我需要重组一个已经存在的数据结构,但不知道如何以最有效的方式做到这一点(如果我应该使用自己的自定义函数或使用第三方库)。
数据:
可能有也可能没有一个月或一天,即如果用户从未输入过数据,那么数据结构将如下所示{}。
2019: { // year
7: { // month
6: { // day
activities: (4) [{…}, {…}, {…}, {…}]
emotionsFelt: (3) ["Excited", "Nervous", "Happy"]
isSpecialDay: false
latitude: null
locationId: null
locationName: null
locationProvider: null
longitude: null
mood: "Awesome"
optionalDescription: ""
rating: 5
timestamp: "2019-07-06T18:52:38.022Z"
},
7: {
activities: []
emotionsFelt: (2) ["Excited", "Lively"]
isSpecialDay: false
latitude: 56.130366
locationId: "ChIJ2WrMN9MDDUsRpY9Doiq3aJk"
locationName: "Canada"
locationProvider: "GM"
longitude: -106.346771
mood: "Awesome"
optionalDescription: ""
rating: 5
timestamp: "2019-07-06T19:00:18.391Z"
}
}
}
结果应该是:
2019: { // year
7: { // month
6: { // day
avgRating: 5,
isSpecialDay: false,
entries: [
{
activities: [{…}, {…}, {…}, {…}],
emotionsFelt: ["Excited", "Nervous", "Happy"],
isSpecialMoment: false,
latitude: null,
locationId: null,
locationName: null,
locationProvider: null,
longitude: null,
mood: "Awesome",
optionalDescription: "",
rating: 5,
images: [],
timestamp: "2019-07-06T18:52:38.022Z",
}
]
},
7: {
avgRating: 5,
isSpecialDay: false,
entries: [
{
activities: [],
emotionsFelt: ["Excited", "Lively"],
isSpecialMoment: false,
latitude: 56.130366
locationId: "ChIJ2WrMN9MDDUsRpY9Doiq3aJk"
locationName: "Canada"
locationProvider: "GM"
longitude: -106.346771
mood: "Awesome",
optionalDescription: "",
rating: 5,
images: [],
timestamp: "2019-07-06T18:52:38.022Z",
}
]
}
}
}
关于如何做到这一点的任何提示? 在此先感谢:)
【问题讨论】:
-
不清楚您需要在两个对象中更改什么
-
我希望
day对象是一个条目数组,而不是单个条目。将当前的rating映射为avgRating。你需要清楚地知道什么? -
ok 使用
JSON.stringify和JSON.Parse复制这两个对象,然后编辑该副本。要遍历副本,请使用for in,您可能需要在此处嵌套for ins。对我来说看起来很简单,除非您可以在迄今为止尝试的内容中指定一个问题,而不是我该如何完成这个! -
好吧,我正试图获得一些指导,因为我知道我可以使用
for..ins做到这一点。它对我来说看起来有点乱,或者可能有第三方库。无论如何,谢谢!
标签: javascript arrays json object