我有两个数组。一名制图员和一名带有我 ID 的人员。
我的数组与外部 ID:
genres_array = [12,28,16]
映射器数组(内部 ID、外部 ID)
mapper = [
[1,12],
[2,18],
[3,19],
[4,28],
[5,16],
[6,90],
]
作为结果,我现在想要一个新数组,其中仅包含类型数组的内部值(类型数组首先具有外部值)。在这种情况下,结果将是 [1,4,5]
我尝试了很多方法,但我真的不知道如何以干净的方式解决这个简单的问题。我很确定它会是这样的
genres_array.map { |genre_id| get_internal_id_from_mapper }
PS:也可能会发生在映射器中找不到 ID 的情况。在这种情况下,我只想将其从数组中删除。有什么想法吗?
最佳答案
您正在寻找rassoc
:
genres_array.map { |genre_id| mapper.rassoc(genre_id)[0] }
结果
[1, 4, 5]
编辑:只需阅读 PS - 尝试如下操作:
genres_array.map { |genre_id|
subarr = mapper.rassoc genre_id
subarr[0] if subarr
}.compact
然后输入
genres_array = [12,28,100,16]
您仍然会得到输出
[1, 4, 5]
关于ruby - 通过另一个数组搜索一个二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19869743/