如何遍历哈希直到找到匹配的元素?
How do I iterate through a hash until I find a matching element?
我有一个将整数映射到数组的散列。例如
{1 => ["abc"], 2 => ["ccc", "ddd"]}
如何遍历哈希直到找到一个条目,其中的值的数组大小仅为 1?通常我可以做到
arr.detect{|element| element.size == 1}
但这只适用于数组。我不确定如何将类似的逻辑应用于哈希。
同样的原则适用:
h = {1 => ["abc"], 2 => ["ccc", "ddd"]}
h.find do |_, l|
l.size == 1
end
# => [ 1, ["abc"]]
现在,如果您正在寻找一个更有用的变量集:
key, value = h.find do |_, l|
l.size == 1
end
# => [ 1, ["abc"]]
key
# => 1
value
# => ["abc"]
如果你只关心数值,那就更简单了:
list = h.values.find do |l|
l.size == 1
end
我有一个将整数映射到数组的散列。例如
{1 => ["abc"], 2 => ["ccc", "ddd"]}
如何遍历哈希直到找到一个条目,其中的值的数组大小仅为 1?通常我可以做到
arr.detect{|element| element.size == 1}
但这只适用于数组。我不确定如何将类似的逻辑应用于哈希。
同样的原则适用:
h = {1 => ["abc"], 2 => ["ccc", "ddd"]}
h.find do |_, l|
l.size == 1
end
# => [ 1, ["abc"]]
现在,如果您正在寻找一个更有用的变量集:
key, value = h.find do |_, l|
l.size == 1
end
# => [ 1, ["abc"]]
key
# => 1
value
# => ["abc"]
如果你只关心数值,那就更简单了:
list = h.values.find do |l|
l.size == 1
end