【发布时间】:2021-01-08 20:25:37
【问题描述】:
我被困在一个项目中,我试图从一个超大的 Google Maps Timeline json 中提取相关数据,并遇到了结构不像我想象的那样有序的问题。从本质上讲,我试图从这个 json 中提取地址、时间、日期和里程,以便为我的汽车每次旅行。为了使用这些数据,我将它粘贴到一个普通的 javascript 文件中并命名它,这样我就可以将它用作一个对象。然后,我获取这些数据并创建一个字符串,该字符串将像 CSV 文件一样格式化该信息。
通过仅查看几次行程来检查 json 的结构,我能够确定以下一般结构:
const google = {
timelineObjects: [
0: {activitySegment: {A NUMBER OF OBJECTS}},
1: {placeVisit : {A NUMBER OF OBJECTS}},
2: {activitySegment: {A NUMBER OF OBJECTS}},
3: {placeVisit : {A NUMBER OF OBJECTS}}
]
}
activitySegment 包含所有旅行信息,例如距离、旅行时间等。placeVisit 包含有关目的地的信息。在我的小样本中,我能够使用 i%2=0 的 if 语句循环遍历每个,然后更改我想从每个中提取的内容,效果很好。
当我尝试添加更大的样本时,我发现 Google 偶尔没有创建 activitySegment 对象,只有一个 placeVisit,它抛出“Uncaught TypeError: Cannot read property 'distance' of undefined”。
我确信偶数/奇数排序将不再有效。有没有办法使用条件来显示 google[timelineObjects][i] 是 {activitySegment} 还是 {placeVisit}?或者,有没有更好的方法来确定数组中的下一个对象是什么?
【问题讨论】:
-
您是否尝试过类似
for in的方法并映射对象的键? stackoverflow.com/questions/684672/…
标签: javascript arrays loops object