ruby - 通过另一个数组搜索一个二维数组

标签 ruby

我有两个数组。一名制图员和一名带有我 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/

相关文章:

ruby-on-rails - 如何强制 Jruby 使用内置的 Ruby 1.9 而不是默认的 Ruby 1.8?

ruby-on-rails - rails 中的 create_or_update 方法

ruby - 解析 DST 中的时区缩写

ruby-on-rails - rails 和 rake 有什么区别?

ruby - 去除/替换字符串中的空格

ruby,字符串替换方法的目的

ruby-on-rails - Ruby:无法使用两个参数进行数学运算

ruby - class_eval、class_exec、module_eval 和 module_exec 之间有什么区别?

ruby-on-rails - 运行 "bin/rake assets:precompile"时未设置 I18n 加载路径!

arrays - 如果元素本身是数组,合并两个数组(元素 + 元素)的最佳方法是什么