2011-08-26 35 views
0

我有兩個哈希值,一個看起來是這樣的:比較兩個哈希值,然後再刪除,如果ID不存在

{:id => "[email protected]", 
:name => "Shellys Shoes", 
:lat => 51.5145683289, 
:lng => -0.1262439936} 

這只是一個紀錄,有大約80%,

第二哈希我有是:

{"id":"[email protected]", 
"lat":51.5123596191, 
"lng":-0.1244800016} 

上面的散列又只是一個記錄,但它是HASH以上通過不返回所有的記錄,只有有效的,我想要做一個API會後的產物比較t運算散列與底部一個,並刪除不存在於底部散列任何記錄,

,例如,如果ID:[email protected]不在所述第二散列然後刪除記錄,

我可以比較哈希,但不知道如何刪除ID不存在?

謝謝你們!

編輯: 這些返回值....

{"points":[{"id":"[email protected]","lat":51.5128250122,"lng":-0.1246550009},{"id":"[email protected]","lat":51.5123596191,"lng":-0.1243880019},{"id":"[email protected]","lat":51.5123596191,"lng":-0.1244800016},{"id":"[email protected]","lat":51.5130996704,"lng":-0.1248089969},{"id":"[email protected]","lat":51.5133934021,"lng":-0.1245559976},{"id":"[email protected]","lat":51.5133934021,"lng":-0.1245559976},{"id":"[email protected]","lat":51.5122642517,"lng":-0.1244129986},]} 

這是原來的格式:

[ {   :id => "SG_2Km6LX3tEcFwx24eo[email protected]", 
      :name => "French Connection Group Plc", 
      :lat => 51.5130157471, 
      :lng => -0.1237210035 
}] 
+0

當你說你有大約80條記錄,這些在散列數組/列表? – mikej

+0

嘿我會編輯上面顯示!謝謝! –

+1

返回的值是JSON格式,您需要解析它以將其用作散列。 – karatedog

回答

0

您可以從返回值收集有效ID列表例如:

valid_ids = returned["points"].collect { |point| point["id"] } 

然後,您可以刪除無效值fr om原件與類似的東西:

original.delete_if { |entry| !valid_ids.include? entry[:id] } 
+0

嗨,我得到這個錯誤與delete_if igeolise.rb:58:在'[] ':不能轉換成符號整數(類型錯誤)從igeolise.rb \t:58:在'塊

' \t from igeolise.rb:58:in'delete_if' \t from igeolise.rb:58:in'
' –

+0

上面的'delete_if'假定'original'是散列數組。聽起來像'original'中的條目是數組,而不是哈希,導致當'[:id]'用作數組索引(只有'Integer'索引)時出現錯誤。再次檢查原件的格式,如果原件當前在問題中發佈,則此功能應起作用。 – mikej