在下面的数组中,我如何找到 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
with 块,使用块参数解构(这里使用符号而不是您的自定义对象):
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
(块参数将相同)。