次の配列で、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
ください(ブロック引数は同じです)。