I have this nested array:
array = [
["A", "X"],
["B", "Y"],
["C", "Z"]
]
有没有一个函数,当我输入"Y"时返回"B",输入"Z"时返回"C"?
find
方法。array = [
["A", "X"],
["B", "Y"],
["C", "Z"]
]
str = "Y"
arr = array.find{|a| a[1] == str}
puts arr[0] if arr
# => B
或者,如果您需要进行多次查找且数组较大,则可以将其转换为哈希表:
hash = array.map(&:reverse).to_h
hash["Y"]
# => "B"
目前没有这样的内部函数,但是可以很容易地创建一个:
▶ λ = ->(input) { array.detect { |e| e.last == input }.first rescue nil }
#⇒ #<Proc:0x0000000437f150@(pry):10 (lambda)>
▶ λ.('X')
#⇒ "A"
▶ λ.('Y')
#⇒ "B"
▶ λ.('QQQ')
#⇒ nil