2011-04-18 44 views
6

Tôi có một mảng các đối tượng ruby ​​trông giống như thế này:Cách Rubyish nhất để có được một mảng chứa giá trị cụ thể từ một mảng các đối tượng?

[#<email: "someemail" other_properties: "SDFDF">, #<...>, #<...>] 

Mỗi phòng trong số các đối tượng trong mảng có một tài sản email. Tôi muốn lấy một mảng mới của tất cả các thuộc tính email của các đối tượng ruby ​​trong mảng.

Sau khi thực hiện đoạn mã, tôi sẽ có một mảng trông như thế này:

["[email protected]", "[email protected]", ...] 

Tôi mới hơn để ruby ​​và muốn làm điều này theo cách rubyish nhất có thể.

Câu hỏi của tôi là, cách tốt nhất để làm điều này trong ruby ​​là gì?

Trả lời

16

Bạn có thể sử dụng phương pháp map để áp dụng một khối để mỗi phần tử của mảng, trả về một mảng mới có chứa các kết quả của từng gọi:

somearray.map {|x| x.email} 
+0

Cảm ơn bạn! Điều này chính xác những gì tôi đã sau. Tôi sẽ chấp nhận ngay khi SO cho phép tôi. :) – Alex

+8

Trong Ruby 1.87+ bạn có thể đơn giản hóa điều này là 'somearray.map (&: email) ' – Phrogz

Các vấn đề liên quan