Ruby lấy các khóa đối tượng dưới dạng mảng


97

Tôi mới sử dụng Ruby, nếu tôi có một đối tượng như thế này

{"apple" => "fruit", "carrot" => "vegetable"}

Làm cách nào để trả về một mảng chỉ gồm các khóa?

["apple", "carrot"]

Đối tượng của bạn là một Hash, vì vậy bạn có thể sử dụng keysphương pháp như {"apple" => "fruit", "carrot" => "vegetable"}.keys. Để biết thêm thông tin, hãy truy cập ruby-doc.org/core-1.9.3
khoai môn

Câu trả lời:


217
hash = {"apple" => "fruit", "carrot" => "vegetable"}
array = hash.keys   #=> ["apple", "carrot"]

nó đơn giản mà


16

Một cách thay thế nếu bạn cần thêm thứ gì đó (ngoài việc sử dụng keysphương pháp này):

hash = {"apple" => "fruit", "carrot" => "vegetable"}
array = hash.collect {|key,value| key }

rõ ràng bạn sẽ chỉ làm điều đó nếu bạn muốn thao tác mảng trong khi truy xuất nó ..


4

Giống như taro đã nói, keystrả về mảng khóa của Hash của bạn:

http://ruby-doc.org/core-1.9.3/Hash.html#method-i-keys

Bạn sẽ tìm thấy tất cả các phương thức khác nhau có sẵn cho mỗi lớp.

Nếu bạn không biết mình đang giải quyết vấn đề gì:

 puts my_unknown_variable.class.to_s

Điều này sẽ xuất ra tên lớp.


2

Sử dụng keysphương pháp:{"apple" => "fruit", "carrot" => "vegetable"}.keys == ["apple", "carrot"]

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.