我有一个带有三个属性的类People
class People
attr_accessor :first_name, :last_name, :age
end
我有两个数组:
a = [p1, p2]
b = [p3, p4]
有没有简单的方法可以将这两个数组合并为一个新数组,并使用以下条件删除该项目:
p1.first_name + p1.last_name == p3.first_name + p3.last_name
然后所有项目应属于数组a
例如
p1.first_name = "Ada"
p1.last_name = "Wang"
p1.age = 28
p2.first_name = "Leon"
p2.last_name = "S"
p2.age = 28
p3.first_name = "Ada"
p3.last_name = "Wang"
p3.age = 18
p4.first_name = "Mario"
p4.last_name = "M"
p4.age = 80
结果应该是[p1] 28岁的Ada.Wang
答案 0 :(得分:1)
我不确定我是否明白你的意思,但这也许是一个可能的选择。
c = a + b
c.uniq! { |e| e.first_name && e.last_name }
在c
和a
的{{3}}上的一个块中调用Array#uniq!。
答案 1 :(得分:0)
如果数组a和b本身不包含名字和姓氏匹配的人,那么这将起作用:
b.each_with_index do |p, i|
if !(b[i].first_name == a[i].first_name and b[i].last_name == a[i].last_name)
a.push(p) # as people p does not contain the same first/last names as a it can now be added to a
end
end
要检查其他字段,只需将first_name / last_name替换为其他变量即可。