2012-05-21 103 views
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"]>] 

我試圖過濾所有的「名稱」從這個領域。任何幫助?

+0

過濾器的含義:a)顯示所有名稱......或b)顯示與特定名稱匹配的PatchedOpenStruct? –

+0

給我看所有的名字 – hilarl

回答

2

如果你只是想提取所有的名字,使用collect(或其map別名)來調用數組中的每個元素的name方法,並收集在另一個數組的結果:

names = a.collect(&:name) 
2

兩種方式如果這些是標準的OpenStructs,我可以考慮這樣做。

array_of_things.collect{|each_thing| each_thing.name}返回所有事物的所有名稱的數組。 array_of_things.select{|each_thing| each_thing.name =~ /Kristen/}返回名稱與表達式/Kristen/匹配的數組。