的我有一个大阵列$actor_movie_array
,这是在这样的方式排序:哈希等效大阵列搜索
[actor1, movie1, movie2, movie3...]
[actor2, movie1, movie2, movie3...]
[actor3, movie1, movie2...]
下面的方法获取一个参数actor_name
,然后通过$actor_movie_array
搜索actor_name
:
def search by actor(actor_name)
result_array = Array.new
$actor_movie_array.each {
|x| if x[0] == actor_name
result_array = x
result_array.delete_at(0)
break
end
}
return result_array
end
如果找到,它将被推入空数组result_array
,如下所示:
result_array = [actor1, movie1, movie2, movie3...]
然后,我将删除数组的第一个索引,在这个例子中是actor1
,因为我只想让这位演员剩下的电影留在result_array
。
但是,这实在是效率低下。我知道哈希等价物会更有效率,但不知道如何去做。任何人都可以帮助翻译成哈希等值?
你问的是如何创建一个带有“actor1”,“actor2”等的散列作为键和电影数组作为值?这看起来有点简单,但我不知道如何解释你的问题。 – Chuck
是的,然后做搜索,如果actor找不到它,它会返回一个空数组。如果演员找到了,它会将该演员的所有电影保存在一个数组中。 – user3260130
'search_by_actor'方法可以替换为'$ actor_movie_array.assoc(actor_name)'。[(docs)](http://www.ruby-doc.org/core-2.1.0/Array.html#method- i-assoc) – steenslag