我有两个数组,都装满了具有许多属性的对象。这两个数组都包含相同类型的对象。我想根据它们的属性id
找到对象匹配的位置。
对象示例:
#<Link:0x00007fac5eb6afc8 @id = 2002001, @length=40, @area='mars' ...>
填充对象的示例数组:
array_links = [<Link:0x00007fac5eb6afc8>, <Link:0x00007fdf5eb7afc2>, <Link:0x000081dag6zb7agg8>... ]
selected_links = [<Link:0x00007fad8ob6gbh5>, <Link:0x00007fdg7hh4tif4>, <Link:0x000081dag7ij5bhh9>... ]
如果这些是对象ID的字符串,并且有匹配项,我可以使用以下代码:
intersection = array_links & selected_links
然而,我想基于它们的属性来执行此操作,并返回匹配的对象本身。就像这样:
intersection = array_links.select(&:id) & selected_links.select(&:id)
当然,不是那个,因为那样行不通,有什么想法? :)
array_links.select(&:id) & selected_links.select(&:id)
应该会返回一个数组,其中包含两个数组中都存在的 id。当然,这意味着你的Link
对象理解_id_
方法。你认为它为什么不起作用呢? - user1934428select(&:id)
听起来很奇怪,因为它所做的只是收集那些id
返回值为真实的元素,它似乎与所述问题无关。 - Sebastián Palma