[英]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.