簡體   English   中英

如何檢查 object 是否在 Javascript 的數組中?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM