2012-08-16 28 views
1

在以下数组中,我如何找到id = 71的产品位置?查找嵌套数组中对象的位置

[[[#<Product id: 71>, #<BigDecimal:x>], 0], [[#<Product id: 73>, #<BigDecimal:x>], 1]] 

或者,如果我有@product = Product.find(71),我将如何再发现,这是上述阵列,使数0相关联,而不是1

回答

4

你可以(在这里使用的符号,而不是您的自定义对象)使用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(块参数将是相同的)。