vergleichen habe ich ein Array von Hashes wie:Ruby Wie kann ich zwei Paare von Elementen in Array von Hashes
arry = {hash1, hash2, hash3,hash4 ....hash_N}
für jeden Hash,
hash1 ={ "deviceId"=>"868403021230682", "osVersion"=>"6.0", "deviceOS"=>"Android",
"appVersion"=>"1.7.2", "action"=>"Enter"}
hash2 = { "deviceId"=>"868403021230682", "osVersion"=>"6.0", "deviceOS"=>"Android",
"appVersion"=>"1.7.2", "action"=>"Leave"}
, weil es, dass für jeden möglich ist, Hash "action"=>"Enter" or "Leave"
wird nicht immer als ein Paar angezeigt, zum Beispiel Aktion für Hash3, Hash4, Hash5 könnte alle "Enter". Meine Idee ist nur zwei Hashes in Betracht zu ziehen, die ein Paar wie hash1 und hash2 erstellen, andere aus dem Array entfernen oder sie in ein anderes Array einfügen können. so sollte das neue Array nur [hash1, hash2, hash7,hash8]
enthalten, sagen wir, Hash7 und 8 sind auch ein Paar.
sollte ich each_with_index verwenden? mein Code wie folgt aus:
def get_result(doc)
result = []
doc.each_slice(2).map { |pair|
pair.each_with_index { |element, index|
if (pair[index].has_value?([:action] => "enter") &&pair[index+1].has_value?([:action] => "Leave")
result.push(pair)
end
}
}
end
aber die if
Anweisung funktioniert nicht richtig, irgendwie verwirrt darüber, wie each_with_index
Hoffnung zu verwenden, kann mir jemand Basierend
wie kann ich den verlassenen Hashes zu einem anderen Array speichern? warum muss man platt machen? Ich möchte nur die Hashes eliminieren, die nicht gepaart sind. Wenn möglich, würde es dir etwas erklären? danke – roccia
@roccia ich aktualisierte meine Antwort, ich hoffe, dass das helfen wird –
Danke! Es ist sehr klar! – roccia