Ho la seguente matrice:Rails: Rimuovere elemento da array di hash
array = [{"email"=>"[email protected]", "name"=>"Test"},
{"email"=>"[email protected]", "name"=>"Test A"},
{"name"=>"Test B", "email"=>"[email protected]"},
{"email"=>"[email protected]", "name"=>"Test C"},
{"name"=>"Test D", "email"=>"[email protected]"},
{"email"=>"[email protected]"},
{"name"=>"Test F", "email"=>"[email protected]"}]
Ho una lista di "lista nera" messaggi di posta elettronica, per esempio:
blacklist = ["[email protected]"]
voglio fare qualcosa di simile questo:
array - blacklist
# => should remove element {"email"=>"[email protected]", "name"=>"Test C"}
Sicuramente c'è un modo sexy-Ruby per fare questo con .select o qualcosa del genere, ma non sono stati in grado di capirlo. Ho provato questo senza alcun risultato:
array.select {|k,v| v != "[email protected]"} # => returns array without any changes
brillante! grazie per il rapido turnaround :) infatti, hai risposto così velocemente che non riesco nemmeno ad "accettare" la risposta sul sistema SO. – MorningHacker
c'è anche una funzione di esclusione che è e alias per! Include –
@Darren: L'unico svantaggio è che ['escludi?'] (Http://api.rubyonrails.org/classes/Enumerable.html#method-i- exclude-3F) è un'estensione di Rails che porterebbe in doppio territorio negativo :) Probabilmente andrei con il 'reject' /' include? '. –