1

次の配列で、id = 71の製品の位置をどのように見つけることができますか?

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

または、持っている場合、このオブジェクトが上記の配列ではなく@product = Product.find(71)番号に関連付けられていることをどのように見つけることができますか?01

4

1 に答える 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ください(ブロック引数は同じです)。

于 2012-08-16T11:16:21.127 に答える