【发布时间】:2013-05-09 23:09:27
【问题描述】:
我有三个数组。
我的主列表包含在数据库中验证的不同实体的组合:
ab = ["a:555", "b:222", "a:333", "b:777", "a:777", "a:999", "b:111"]
我还有两个由 a 和 b 实体组成的数组,它们是分开的,但是是有序的(有些是缺失的):
# notice that some of the items from the initial list are missing, but the order is preserved!
a = [{id}, "a:777", "a:999"]
b = ["b:222", "b:111"]
在数组c 中合并a 和b 的有效方法是保留项目所在ab 中的顺序?我的预期结果是:
c = ["a:555", "b:222", "a:777", "a:999", "b:111"]
我是 Ruby 新手,我想出的一切都非常丑陋。
编辑:
我确实知道这很重要,而且会让人感到困惑,但 a 和 b 是表示 ab 中的字符串的复杂对象 (AR)。用我的代码澄清一下:
ab = ["a:555", "b:222", "a:333", "b:777", "a:777", "a:999", "b:111"]
a = [{:id => 555}, {:id => 777}, {:id => 999}]
b = [{:id => 222}, {:id => 111}]
c = []
ab.each { |item|
parts = item.split(":")
if parts[0] == "a"
if a[0][:id].to_s() == parts[1]
c << a.shift()
end
else
if b[0][:id].to_s() == parts[1]
c << b.shift()
end
end
}
puts c
【问题讨论】:
-
对不起,我没听清楚。你想到了什么?
-
是的,这个问题令人困惑。
-
将在一分钟内添加我的代码。
-
@Veseliq 这里的重点是将
ab中的字符串与a和b中的对象进行比较。有用的是知道如何从对象中获取ab中的字符串,我想您不使用变量名a和b来生成这些字符串。 -
是否有机会在
a和b中保持相同的值,或者它们始终拥有唯一值?