gpt4 book ai didi

arrays - 根据属性对两个数组进行交集后返回对象

转载 作者:行者123 更新时间:2023-12-04 15:00:13 25 4
gpt4 key购买 nike

我有两个数组,都填充了具有大量属性的对象。两个数组都包含相同的对象类型。我想根据对象的属性 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)

当然,不是那样,因为那行不通,有什么想法吗? :)

最佳答案

你可以:

1 :

覆盖 eql?(other) 方法然后数组交集将起作用

class Link < ApplicationRecord
def eql?(other)
self.class == other.class && self.id == other&.id # classes comparing class is a guard here
end

# you should always update the hash if you are overriding the eql?() https://stackoverflow.com/a/54961965/5872935
def hash
self.id.hash
end
end

2:

使用array.select:

array_links.flat_map {|i| selected_links.select {|k|  k.user_id == i.user_id }}

关于arrays - 根据属性对两个数组进行交集后返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67089501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com