h = {
:vehicle => [
[0] {
:make => "Honda",
:year => 2010
},
[1] {
:make => "Kia",
:year => 2014
},
[2] {
:make => "Saturn",
:year => 2005
}
]
}
我想删除{:make=>"Kia", :year=>2014}
,以便h
为:
h = {
:vehicle => [
[0] {
:make => "Honda",
:year => 2010
},
[1] {
:make => "Saturn",
:year => 2005
}
]
}
我试过了:
h[:vehicle].delete_if{ |_,v| v == "Kia" }
#=> does nothing
h.delete_if{ |_,v| v == "Kia" }
#=> does nothing
h[:vehicle].tap { |_,v| v.delete("Kia") }
#=> does nothing
h.delete("Kia")
#=> nil
h[:vehicle].delete("Kia")
#=> nil
这是我头痛的地方:
h[:vehicle].include?("Kia")
#=> false
h[:vehicle][1]
#=> {:make=>"Kia", :year=>2014}
h[:vehicle][1].include?("Kia")
#=> false
感谢您的帮助。
答案 0 :(得分:1)
h[:vehicle].delete_if { |h| h[:make] == 'Kia' }
将删除带有Kia的h
副本。请注意,虽然这是一种有点奇怪的方法,但您的第一个示例对我有用。请记住,您必须查看返回的值才能看到结果 - delete_if
不会修改原始哈希。