1
在以下数组中,我如何找到id = 71的产品位置?查找嵌套数组中对象的位置
[[[#<Product id: 71>, #<BigDecimal:x>], 0], [[#<Product id: 73>, #<BigDecimal:x>], 1]]
或者,如果我有@product = Product.find(71)
,我将如何再发现,这是上述阵列,使数0
相关联,而不是1
?
在以下数组中,我如何找到id = 71的产品位置?查找嵌套数组中对象的位置
[[[#<Product id: 71>, #<BigDecimal:x>], 0], [[#<Product id: 73>, #<BigDecimal:x>], 1]]
或者,如果我有@product = Product.find(71)
,我将如何再发现,这是上述阵列,使数0
相关联,而不是1
?
你可以(在这里使用的符号,而不是您的自定义对象)使用Array#index
用块,用块参数解构:
arr = [[[:a, :b], 5], [[:c, :d], 7]]
# => [[[:a, :b], 5], [[:c, :d], 7]]
arr.index{|((a, b), c)| c == 7}
# => 1
arr.index{|((a, b), c)| b == :a}
# => nil
arr.index{|((a, b), c)| b == :b}
# => 0
如果你有兴趣在特定的元素,而不是它的指数,只是用find
代替的index
(块参数将是相同的)。