首页 > 解决方案 > 如何从数组中提取键

问题描述

我有一组标签

[
{"1boy": 0.9390615820884703},
{"solo": 0.9158311486244202},
{"male": 0.6592671275138855},
{"black hair": 0.4281844198703766},
] 

如何从这个哈希数组中提取字符串,以便它们显示为列表:

标签: arraysrubylistruby-on-rails-3hash

解决方案


正如 SimpleLime 在评论中发布的那样,最优雅的方式是使用flat_map.

.flat_map(&:keys)

在您的问题中,您将键称为“字符串”,但在您的示例中,它们是符号。您用于哈希的语法是将您的“字符串”转换为符号。

"1boy": 0.9390615820884703

这使得 key 的符号看起来像一个字符串,但不是。Ruby 允许使用字符串创建符号,这对于使用通常不允许的字符(例如标点符号或空格)创建符号很有用。

:"some string?!".class
=> Symbol

如果您真的想要键的字符串,则必须使用带有=>运算符的“旧”语法:

"1boy" => 0.9390615820884703

因此,要返回实际的字符串,您还需要转换它们。一种可能的方法是:

.flat_map(&:keys).map(&:to_s)

推荐阅读