[英]How do I check if an object is within an array in Javascript?
我被困在一个项目中,我试图从超大规模的谷歌地图时间线 json 中提取相关数据,并遇到了结构不像我想象的那样有序的问题。 从本质上讲,我试图为我的汽车每次旅行从 json 中提取地址、时间、日期和里程。 为了使用这些数据,我将它粘贴到一个普通的 javascript 文件中并命名它,以便我可以将它用作 object。 然后我获取这些数据并创建一个字符串,该字符串将像 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 object 并且只有一个 placeVisit,它抛出“Uncaught TypeError: Cannot read property 'distance' of undefined”。
我确信偶数/奇数排序将不再有效。 有没有办法使用条件来显示 google[timelineObjects][i] 是 {activitySegment} 还是 {placeVisit}? 或者,有没有更好的方法来确定阵列中的下一个 object 是什么?
您可以使用Object.prototype.hasOwnProperty()
测试特定数组索引处的 Object 是否具有给定属性:
const google = { timelineObjects: [ {activitySegment: {}}, {placeVisit: {}}, {activitySegment: {}}, {placeVisit: {}} ] }; console.log(google.timelineObjects[0].hasOwnProperty("activitySegment")); // true console.log(google.timelineObjects[1].hasOwnProperty("activitySegment")); // false
如果您的目标是查看您获得的 object 类型。 可以遍历每个object,看看object的key是什么,根据key值处理数据。 像这样的东西。
Object.entries(google).forEach(([key, value]) => {
if(key==='activitySegment') {
//process activeSegment here
}else {
//process placeVisit here
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.