0

我有以下数组:

[#<PatchedOpenStruct name="Kristen Stewart", id="162655167", characters=["Snow White"]>, #<PatchedOpenStruct name="Chris Hemsworth", id="770829335", ch
aracters=["The Huntsman"]>, #<PatchedOpenStruct name="Charlize Theron", id="162654733", characters=["The Queen"]>, #<PatchedOpenStruct name="Viggo Mort
ensen", id="162654541">, #<PatchedOpenStruct name="Sam Claflin", id="771073196", characters=["Prince"]>]

我正在尝试从中过滤所有“名称”字段。有什么帮助吗?

4

2 回答 2

2

如果您只想提取所有名称,请使用collect(或其map别名)对数组的每个元素调用该name方法并将结果收集到另一个数组中:

names = a.collect(&:name)
于 2012-05-21T16:52:47.123 回答
2

如果这些是标准的 OpenStructs,我可以想到两种方法来做到这一点。

array_of_things.collect{|each_thing| each_thing.name}返回所有事物的所有名称的数组。 array_of_things.select{|each_thing| each_thing.name =~ /Kristen/}返回名称与表达式匹配的事物数组/Kristen/

于 2012-05-21T17:03:15.760 回答