如何从数组中提取键

时间:2018-07-10 00:46:39

标签: arrays ruby list ruby-on-rails-3 hash

我有一个标签数组

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

如何从此哈希数组中提取字符串,以使其显示为列表:

  • 1boy
  • 个展
  • 男性
  • 黑发

2 个答案:

答案 0 :(得分:0)

如SimpleLime在评论中所述,最优雅的方法是使用flat_map

.flat_map(&:keys)

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

"1boy": 0.9390615820884703

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

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

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

"1boy" => 0.9390615820884703

因此,要返回实际的字符串,您还需要对其进行转换。一种可能的方式是:

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

答案 1 :(得分:0)

如果您没有嵌套结构或只需要第一级的键:

.map{ |h| h.keys.first.to_s }