我有一系列哈希,像这样:
my_array = [{foo:1,bar:"hello",baz:3},{foo:2,bar:"hello2",baz:495,foo_baz:"some_string"},...]
#there can be arbitrary many in this list.
#There can also be arbitrary many keys on the hashes.
Run Code Online (Sandbox Code Playgroud)
我想创建一个新数组,它是最后一个数组的副本,除了我删除任何:bar条目.
my_array2 = [{foo:1,baz:3},{foo:2,baz:495,foo_baz:"some_string"},...]
Run Code Online (Sandbox Code Playgroud)
我可以my_array2这样做:
my_array2 = my_array.map{|h| h.delete(:bar)}
Run Code Online (Sandbox Code Playgroud)
但是,这会改变原作my_array,我想保持不变.
有没有办法做到这一点,而不必先复制my_array?
小智 5
完成此任务的众多方法之一:
my_array2 = my_array.map{|h| h.reject{|k,v| k == :bar}}
Run Code Online (Sandbox Code Playgroud)